DIY面向对象笔记01.docx
《DIY面向对象笔记01.docx》由会员分享,可在线阅读,更多相关《DIY面向对象笔记01.docx(13页珍藏版)》请在冰点文库上搜索。
![DIY面向对象笔记01.docx](https://file1.bingdoc.com/fileroot1/2023-5/27/47e2ca78-d1bc-4acc-b544-337c414e10f1/47e2ca78-d1bc-4acc-b544-337c414e10f11.gif)
DIY面向对象笔记01
一。
。
继承:
笼统地说,继承是将类中共同的特征和行为再次抽取出来建立一个类,使其他类可以沿用此类中的属性和方法。
这样不仅可以减少程序中的重复代码,而且易于程序扩展
二.。
继承的实现:
1.建立父类
publicclassPerson{
publicStringname=“person”;
publicvoidgetInfo(){
System.out.println(“thisisaperson”);
}
}
2.使用extends建立子父类继承关系
publicclassStudentextendsPerson{
publicintage;
publicvoidplay(){}
}
3,创建子类对象访问父类的属性和方法
publicclassTest{
publicstaticvoidmain(Stringargs[]){
Studentstu=newStudent();
System.out.println(stu.name);//访问父类中的age属性
stu.getInfo();//调用父类中的getInfo方法
}
}
JAVA只支持单继承,不允许多继承,即一个子类不允许有多个父类,一个类可以即是子类,同时又是父类
三.。
在Java中,Object是所有类的父类,所有的Java类都直接或间接地继承
了java.lang.Object类
定义一个类时,没有使用extends关键字,那么该类实际上隐式继承
了Object
四。
五。
六。
在使用super和this时我们需要注意以下4个方面
==>每个子类构造方法中首先会隐含地调用super(),然后执行构造方法中的代码,
而且在子类的构造方法中可以使用super()主动的调用父类的无参构造方法,
如果父类的构造方法有参数的话,可通过super(参数列表)调用父类的有参构造方法
==>super()和this()均需放在构造方法内第一行
==>this()和super()不能同时出现在一个构造函数中
==>this()和super()均不可以在static环境中使用。
Java中使用super关键字来引用父类的成员。
super()是调用父类的构造方法;它只能使用在构造方法中的第一行,且必须放在第一行。
注意:
Super()和this()同时只能使用一种。
七.。
访问修饰符
八Stati.
注意:
static方法中不可访问非static的成员。
九.Java中使用extends关键字实现类的继承机制。
语法规则:
Java只支持单继承,不允许多继承。
注意:
修饰符为private的属性和方法不会被继承。
注意:
构造方法也不会被继承。
根类(父类、基类):
java.lang.Object类
十
十一。
方法的重载:
是指一个类中可以定义有相同的名字、但参数个数或类型不同的多个方法。
调用时,编译器会根据不同的参数表选择对应的方法。
例如:
TestOverLoading.java
12.。
方法重写
例如:
十三.。
14.。
final
final可用来修饰变量、方法和类。
final的属性或变量,即是一个常量。
final的方法不能被重写。
final的类不能被继承。
例:
TestFinal.java
J2SDK中提供有许多final类,例String、Math、Boolean等。
(参看API文档)
如果自己的类不想被别人继承,可用final修饰。
15.。
抽象类和抽象方法
用abstract关键字修饰的类,即抽象类。
作用:
描述概念性的内容,这样可以提高开发效率,更好地统一用户“接口”。
语法格式:
抽象类必须被继承,抽象方法必须被重写。
抽象类不能被实例化;抽象方法只需声明,无需实现。
抽象类通常包括一个或多个抽象方法,但不是一定包括
若类中包含了抽象方法,则该类必须被定义为抽象类。
注意:
虽然抽象类不能产生实例对象,但还是需要构造方法的存在!
abstract关键字只能用在类和方法上,而不能用在属性和一般的变量上。
16.接口
是抽象方法和常量的定义的集合。
从本质上讲,接口是一种特殊的抽象类,这种抽象类中只包含常量和方法的定义,而没有变量和方法的实现。
》》》》实现接口的方法:
[public]interface接口名[extends父接口名列表]{
typeNAME=value;
//该常量被实现该接口的多个类共享;
//缺省的具有public,final,static的属性
returntypemethodName([paramlist]);
//缺省的具有public和abstract属性
}
实现接口的方法:
接口特性:
接口中声明的成员变量默认为publicstaticfinal的,且也只能是publicstaticfinal的;
接口中只能定义为抽象方法,而且这些方法默认为public的,且也只能为public的
接口可以继承其它接口,并添加新的属性和抽象方法。
接口可以实现多继承。
即一个接口可有多个父接口(即接口可实现多继承),用逗号隔开
在类的声明中用implements子句来表示一个类使用某个接口。
多个无关的类可以实现同一个接口。
一个类可以实现多个无关的接口。
定义Java类的语法格式:
在类体中可以使用接口中定义的常量,而且必须实现接口中定义的所有方法。
代码:
interfaceSinger{publicvoidsing();}
interfacePainter{publicvoidpaint();}
classStudentimplementsSinger{
privateStringname;
Student(Stringname){this.name=name;}
publicvoidstudy(){
System.out.println("studying...");
}
publicStringgetName(){returnname;}
publicvoidsing(){
System.out.println("Studentissinging.");
}
}
////////////////////////////////////////////
classTeacherimplementsSinger,Painter{
privateStringname;
Teacher(Stringname){this.name=name;}
publicStringgetName(){returnname;}
publicvoidteach(){
System.out.println("teaching...");
}
publicvoidsing(){
System.out.println("Teacherissinging.");
}
publicvoidpaint(){
System.out.println("Teacherispainting.");
}
}
////////////////////////////////////
publicclassTestInterface{
publicstaticvoidmain(Stringargs[]){
Singers1=newStudent("Helen");
s1.sing();
Singers2=newTeacher("John");
s2.sing();
Painterp1=(Painter)s2;
p1.paint();
}
}