1.java中的内部类
内部类就是定义在一个类里面的java类,与之相对应的包含内部类的类就是外部类。
内部类作用:
更好的封装,内部类隐藏在外部类之内,因此,外部类同包下面的其他类不可直接访问。
内部类的方法可以直接访问外部类的所有数据,
包括私有数据。
内部类所实现的功能用外部类同样可以实现,只是有时候用内部类更加的方便。
内部类可以分为以下几种:
成员内部类
静态内部类
方法内部类
匿名内部类
定义了成员内部类后,必须使用外部类对象来创建内部类对象,而不能直接去 new 一个内部类对象,
即:内部类 对象名 = 外部类对象.new 内部类( );
外部类并不能直接调用内部类的方法或者属性,可以通过创建内部类的对象来调用。
如果,外部类和内部类拥有相同的成员变量或者方法,内部类默认访问自己的成员变量和方法,如果要访问外部类的成员变量,可以用this关键字
eg:
public class Outer{
int a=1;
public class Inner{
int a=2;
public void show(){
System.out.println("访问外部类的成员变量"+Outer.this.a);
System.out.println("访问内部类的成员变量"+a);
}
}
}
运行的结果就是:1,2;
2.java中的方法内部类
顾名思义,java的方法内部类就是定义在外部类中的方法里面的类,只能在该方法内部可见,即只可以在该方法内部调用。
public class Outer{
int a=1;
final int b=2;
public void test(){
public class Inner{
int c=3;
public void show(){
System.out.println("访问外部类的成员变量"+a;);
System.out.println("访问方法内部类的成员变量"+c);
}
}
test myWay=new test();
myWay.show();
}
public static void main(String[] args){
Outer youWay=new Outer();
youWay.test();
}
}
方法内部类只能在外部类的方法内部调用,因此不能用访问控制符和static关键字。
3.java中的继承
继承是java的三大特征之一
子类的构造方法一定会调用父类的构造方法,任何子类的构造方法的第一行要么是this()或者super(),this()表示调用本类的其他构造方法
super()则表示调用父类的构造方法,在没有特别申明的时候,即没有this()调用本类的其他重载构造方法,则默认调用父类的无参构造方法
如果没有明确申明而且父类中有有参的构造方法而又没有显示的申明无参的构造方法,这个时候在子类创建对象的时候就会出错。
构造方法子类是不能继承的,子类可以继承父类的成员方法和成员变量,但是无法继承父类的构造方法。
父类
public class car{
String color;
int heigth;
public void drive(){
System.out.println("父类");
}
}
子类
public class bus extends car{
}
实例:
public class Demo{
public static void mian(String[] args){
bus myBus=new bus();
myBus.color="red";
myBus.drive();
}
}
4.java中方法的重写
重写方法必须和被重写的方法具有相同的方法名,参数列表,返回类型
重写之后的方法访问权限不能比重写之前更严格,意思就是访问权限不能小于原方法
重写是类与类之间的关系,两者必须是继承关系。重载是方法与方法之间的关系。
5.final关键字
当final关键字用来修饰类的时候表示类不可以被继承
当final关键字用来修饰方法的时候表示方法不可被重写
当final关键字用来修饰属性的时候,则该类的属性不会被隐式的初始化,就是说这个属性必须有值,或者是在构造方法中赋值。
当final关键字用来修饰变量的时候,变量只能被赋值一次,变为常量不可被更改了。
6.super关键字
在对象内部使用,可以代表父类对象
eg:super.age表示调用父类的age属性,这个地方的super就代表父类对象。
方法是一样的,也可以这样调用。