目录
面向对象
一.继承
1.1 object
1.3 方法的重写override
1.4 instanceof 运算符
1.5 final 关键字
1.6 tostring方法
1.7 ==和equals方法
二.组合
面向对象
一.继承
关键字“extends”的意思是“扩展”,子类是父类的扩展。
class anmail{
int ages;
String name;
}
class dogs extends anmail{
public void jiao(){
System.out.println("汪汪汪!!!");
}
public dogs(int ages,String name){
this.ages=ages;
this.name=name;
}
1.1 object
object 是Java的根基类,也就意味着所有的Java对象都拥有object类的属性和方法。如果在类的声明中未使用extends关键字指明其父类,其默认继承object类。
class anmail extends Object{
int ages;
String name;
}
注:子类继承父类,可以得到父类的全部属性和方法(除了父类的构造方法),但不见得可以直接访问(比如,父类的私有属性和方法)。
1.3 方法的重写override
方法的重写需要符合下面的三个要点:
1.“==”:方法名和形参列表相同。
2.“<=":返回值类型和声明异常类型,子类小于等于父类。
3.“>=”:访问权限,子类大于等于父类。
1.4 instanceof 运算符
instanceof是二元运算符,左边是对象,右边是类;当对象是右边类或子类所创建对象时,返回true,否则,返回false。
public class test {
public static void main(String[] args) {
dogs d=new dogs(1,"doudou");
dogs p=new dogs(1,"doudou");
System.out.println(d instanceof dogs);
System.out.println(d instanceof anmail);
}
d时dogs的对象,dogs是anmail的子类。
1.5 final 关键字
final 关键字的作用:
1.修饰变量:被它修饰的变量不可改变。一旦赋了初值,就不能被重新赋值。
final int MAX=11;
2.修饰方法:该方法不可被子类重写。但是可以被重载。
final void study(){}
3.修饰类:修饰的类不能被继承。
final class A{}
final class anmail {
int ages;
String name;
}
class dogs extends anmail{
public void jiao(){
System.out.println("汪汪汪!!!");
}
public dogs(int ages,String name){
this.ages=ages;
this.name=name;
}
1.6 tostring方法
源码:
public String toString(){
return getClass().getName()+"@"+Integer.toHexString(hashCode());
}
class dogs {
anmail d=new anmail();
public void jiao(){
System.out.println("汪汪汪!!!");
}
public dogs(int ages,String name){
this.ages=ages;
this.name=name;
}
public String toString(){
return name+"年龄:"+ages;
}
}
1.7 ==和equals方法
public class test {
public static void main(String[] args) {
dogs d=new dogs(1,"doudou");
dogs p=new dogs(1,"doudou");
System.out.println(d==p);//对象不同,返回false
System.out.println(d.equals(p));//名字相同 返回true
}
二.组合
组合是继承的另一种表达方式。
class anmail {
int ages;
String name;
}
class dogs {
anmail d=new anmail();



