博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JavaSE总结篇
阅读量:5833 次
发布时间:2019-06-18

本文共 5722 字,大约阅读时间需要 19 分钟。

  hot3.png

 

一.构造函数

说明:是类的一种特殊的方法。

作用:完成对新对象的初始化。

特点:1.方法名和类名相同

           2.没有返回值

          3.在创建一个类的新对象时,系统会自动的调用该类的构造方法完成对新对象的初始化

          4.一个类可以有多个构造函数

          5.每个类都有一个默认的构造函数

public class Demo1{public static void main(String []args){}//定义一个人类class Person{int age;String name;//构造函数1public Person(int age,String name){age=age;name=name;}//构造函数2public Person(int age){name=name;}}}

二.继承

说明:当多个类存在相同的属性和方法时,可以从这些类中抽象出父类,在父类的中定义这些相同的属性和方法,所有的子类不需要重新定义这些属性和方法,只需要通过关键字extends,来声明子类继承父类,这样子类就会拥有父类定义的某些属性方法。

作用:解决代码复用的问题。

特点:1.public、protected、默认方式的属性和方法可以被继承

          2.子类最多只能继承一个父类

          3.java所有的类都是Object类的子类

package com.abc;public class Demo2{public static void main(String args[]){Pupil p1=new Pupil();p1.printname();}}//学生类(父类)class Stu{protected int age;public String schoolId;public String name;public float fee;public void printName(){System.out.println("名字"+this.name);}}//小学生类class Pupill extends Stu{public void pay(float fee){this.fee=fee*0.8f;}}//中学生类class MiddleStu extends Stu{public void pay(float fee){this.fee=fee;}}

三.重载

说明:重载就是在类中的同一种功能的多种实现方式,到底采用哪种方式,取决于调用者各处的参数。

特点:一个类中有多个方法名相同的方法,但这些方法的参数不同。

例子:一个游戏不确定是单人玩还是双人玩时,根据玩家不同而自动调用不同的方法。

public class Demo3{	public static void main(String []args){		Abc2 abc1=new Abc2();		System.out.println(abc1.getMax(12,14));		System.out.println(abc1.getMax(24f,20f));	}}class Abc2{	//返回较大的整数	public int getMax(int i,int j){		if(i>j){			return i;		}else{			return j;		 }	}	public float getMax(float a,float b){		if(a>b){			return a;		}else{			return b;		 }	}

四.覆盖

说明:覆盖就是子类有一个方法,和父类的某个方法的名称、返回类型、参数一样。

特点:父类有一个方法,子类继承这个父类,自己也有一个方法,这个方法和父类的方完全一样,否则编译出错。

例子:一个动物父类,一个子类狗类,一个子类猫类。动物父类里有个叫的方法,子类也有一个叫的方法,不过它是汪汪的叫,猫类是喵喵的叫。

public class Demo4{	public static void main(String []args){		//创建一只猫		Cat cat1=new Cat();			cat1.cry();		Dog dog1=new Dog();			dog1.cry();	}}//动物类class Animal{	int age;	String name;	//都会叫	public void cry(){		System.out.println("我是动物,不知道怎么叫");	}}//猫猫类class Cat extends Animal{	//覆盖父类方法	public void cry(){		System.out.println("猫猫叫!");	}}//狗狗类class Dog extends Animal{	//覆盖父类方法	public void cry(){		System.out.println("汪汪叫!");	}}

五.多态

说明:允许不同类的对象对同一消息做出响应。及同一消息可以根据发送对象的不同而采用多种不同的行为方式。

作用:消除类型之间的耦合关系、可替换性、可扩充性、接口性、灵活性、简化性。

特点:1.要有继承

           2.要有重写

           3.父类引用指向子类对象

例子:按下F1键这个动作,如果当在PS软件界面下,弹出网页版的帮助,而在word下弹出word帮助文档,在windows下弹出windows帮助和支持。同一个事件发生在不同的对象上会产生不同的结果。

//演示继承、方法覆盖、多态public class Demo5{	public static void main(String[] args) {		//非多态演示		Cat cat=new Cat();		cat.cry();		Dog dog=new Dog();		dog.cry();		//多态演示		Animal an=new Cat();		an.cry();		an=new Dog();		an.cry();	}}//动物类class Animal{	String name;	int age;	public String getName() {		return name;	}	public void setName(String name) {		this.name = name;	}	public int getAge() {		return age;	}	public void setAge(int age) {		this.age = age;	}	//动物会叫	public void cry(){		System.out.println("不知道怎么叫");	}}//创建Dog子类并继承Animal父类及覆盖cry方法class Dog extends Animal{	//狗叫	public void cry(){		System.out.println("汪汪叫");	}}class Cat extends Animal{	//猫自己叫	public void cry(){		System.out.println("猫猫叫");	}}

六.抽象

说明:可以用abstract关键字来修饰的方法或类。

作用:当父类的一些方法不能确定时,可以用abstract解决。

特点:1.抽象类不能被实例化

           2.抽象类可以没有abstract抽象方法

           3.一旦类包含了abstract抽象方法,则这个类必须声明为abstract抽象类

           4.抽象方法不能有主体,例如:abstract  void void abc();

//抽象类的必要性[Demo6.java]public class Demo6{	public static void main(String[] args) {		//Animal an=new Animal();抽象类不允许实例化		Animal an=new Cat();		an.cry();		an=new Dog();		an.cry();	}}//抽象类abstract关键词abstract class Animal{	String name;	int age;	//动物会叫,使用了abstract抽象方法	abstract public void cry();//抽象类中可以没有abstract抽象方法	//抽象类内可以有实现方法	public void sx(){		System.out.println("实现方法");	}}//当一个子类继承的父类是abstract抽象类的话,需要程序员把抽象类的抽象方法全部实现。class Cat extends Animal{	//实现父类的cry,其实类似上节学习中的子类覆盖父类	public void cry(){		System.out.println("猫猫叫");	}}class Dog extends Animal{	//实现父类的cry,其实类似上节学习中的子类覆盖父类	public void cry(){		System.out.println("汪汪叫");	}}

七.接口

说明:英文称作interface,在软件工程中,接口泛指供别人调用的方法或者函数。   

作用:体现了程序设计的多态和高内聚低耦合的设计思想。

特点:1.接口不能被实例化

           2.接口中所有的方法都不能有主体(不能有大括号)。

           3.一个类可以实现多个接口

           4.接口中的变量会被隐式地指定为public static final 变量(只能是这个),方法会 被隐式地指定public abstract 方法(只能是这个)。根据这个特性,我们经常把常用的变量定义在接口中,作为全局变量使用(访问形式: 接口名.变量名)。

//接口的实现[Demo7.java]//电脑,相机,u盘,手机//usb接口interface Usb{	int a=1;//加不加static都是静态的,不能用private和protected修饰	//声明了两个方法	public void start();//接口开始工作	public void stop();//接口停止工作}//编写了一个相机类,并实现了usb接口//一个重要的原则:当一个类实现了一个接口,要求该类把这个接口的所有方法全部实现class Camera implements Usb{	public void start(){		System.out.println("我是相机,开始工作了..");	}	public void stop(){		System.out.println("我是相机,停止工作了..");	}}//编写了一个手机,并实现了usb接口class Phone implements Usb{	public void start(){		System.out.println("我是手机,开始工作了..");	}	public void stop(){		System.out.println("我是手机,停止工作了..");	}}//计算机class Computer{	//开始使用usb接口	public void useUsb(Usb usb){		usb.start();		usb.stop();	}}public class Demo7 {	public static void main(String[] args) {		System.out.println(Usb.a);		//创建 Computer		Computer computer=new Computer();		//创建Camera		Camera camera1=new Camera();		//创建Phone		Phone phone1=new Phone();		computer.useUsb(camera1);		computer.useUsb(phone1);}

八.final

说明:类型修饰符,用来修饰类、方法和变量。

作用:1.当不希望类被继承时

           2.当不希望父类的某个方法被子类覆盖时。

           3.当不希望类的某个变量的值修改时。

//final方法的使用[Demo8.java]public class Demo8 {	public static void main(String[] args) {		Aaa aaa=new Aaa();		aaa.show();		Bbb bbb=new Bbb();		bbb.show();	}}class Aaa{ 	int a=0;//如果a不赋初值,a是0。定义类型后应赋值	//圆周率不让修改	//带有final修饰的变量命名时应有_下划线来区分表示。这是java程序员的标准。	final float reate_1=3.1415926f;//使用final可以保证,需要强制不被修改的数据一定要用final锁定	//final int b;  //使用final定义变量时一定要赋初值否则报错。	//b=1;	final public void sendMes(){//给成员方法用final来修饰则表示不可以被修改,不可被覆盖。		System.out.println("发送消息");	}	public void show(){		System.out.println("a="+a);	}}final class Bbb extends Aaa{//定义类前加final表示该类不允许被继承	public Bbb(){		a++;		//reate_1=reate+1;	}	/*public void sendMes(){		System.out.println("发送消息")	}*/}

  

 

 

 

 

 

 

 

 

 

转载于:https://my.oschina.net/hpuwxy/blog/750964

你可能感兴趣的文章
灰度图像和彩色图像
查看>>
FreeMarker-Built-ins for strings
查看>>
argparse - 命令行选项与参数解析(转)
查看>>
修改上一篇文章的node.js代码,支持默认页及支持中文
查看>>
我理想中的前端工作流
查看>>
Chrome 广告屏蔽功能不影响浏览器性能
查看>>
Android状态栏实现沉浸式模式
查看>>
java只能的round,ceil,floor方法的使用
查看>>
新开的博客,为自己祝贺一下
查看>>
采用JXL包进行EXCEL数据写入操作
查看>>
将txt文件转化为json进行操作
查看>>
线性表4 - 数据结构和算法09
查看>>
我的2014-相对奢侈的生活
查看>>
Java设计模式
查看>>
Spring Cloud 微服务分布式链路跟踪 Sleuth 与 Zipkin
查看>>
ORM数据库框架 SQLite 常用数据库框架比较 MD
查看>>
华为OJ 名字美丽度
查看>>
微信公众号与APP微信第三方登录账号打通
查看>>
onchange()事件的应用
查看>>
Windows 下最佳的 C++ 开发的 IDE 是什么?
查看>>