一、继承
特点:
1.继承有一定的层次结构,而且要具备一定的可传递性。
2.子类继承了父类中所有的属性和方法 ,但是父类中似有的属性和构造方法子类无法继承。
私有属性 ,只能属于当前类,其他类无法使用。
构造方法不能被继承,因为构造方法是用来创建当前类的对象的,如果子类能继承,就说明子类也可以创建父类对象,违反第一个特点。
3.子类也可以拥有自动的属性和功能。
4.在Java中只支持单一继承,即一个子类只能有一个父类,但一个父类可以有多个子类。
作用:提高代码的重用性。
关键字extends : 语法:
[访问修饰符] class 子类 extends 父类{}
public class Demo16 {
public static void main(String[] args) {
ZI zi=new ZI();
zi.t2();
父类
class FU{
private String name ="张珊";
private int age=56;
String hourse="十套别墅";
String car="五辆奔驰S600";
String money="9990909009098888888$";
void ti(){
System.out.println("这是父类中的ti方法");
}
}
子类
class ZI extends FU{
private String name="张四";
void t2(){
System.out.println(name+"继承的房子: "+super.hourse+"继承的车子: "+super.car+"继承的存款: "+super.money);
super.ti();
}
}
二、super关键字
1.
public class Demo16 {
public static void main(String[] args) {
S1 s1=new S1();
F3 f3=new F3();
f3.dis(20);
}
}
class F1{
public F1(String name){
System.out.println(name);
System.out.println("父类中的构造方法");
}
public void dis(){
System.out.println("父类中的普通方法");
}
}
class S1 extends F1{
public S1(){
super("gou");
System.out.println("子类中的构造方法");
super.dis();
三、final关键字
final修饰的元素都是最终的,无法修改的
final的用法:
final修饰变量,这个变量等同于常量,常量一旦赋值就无法更改。
final修饰方法中的参数,那么这个参数为最终参数,在方法中无法对最终参数进行修改
fina修饰类,类不能被继承
final修饰的方法,方法不能被冲写。
如果使用时对final修饰的元素座更改会报出编译错误
四、static关键字
1、static可以修饰成员变量、方法,所修饰的元素又被称为类变量、类方法或者静态变量、静态方法,属于类。
2、 没有被static修饰的成员变量、方法称为实例变量或者实例方法,他们属于对象。
3、 static修饰变量或者方法 ,副本只有一个。只会被JVM加载一次。
4、static修饰的变量或方法,在类被加载时就会进行内存空间的分配;而实例变量或方法,只有创建 了对象,它们才会有内存空间。
静态变量
静态变量在使用时可以直接通过类名.属性名的方式调用。也可以通过对象名.属性名调用。
静态变量可以被类中所有的对象共享。
public class Demo3{
private static String name="张三";
private static int age=22;
private String address;
public static void main(String[]args){
System.out.println(Demo3.name);
System.out.println(Demo3.age);
System.out.println("--------------------------------------------------- ");
Demo3 demo3=new Demo3();
demo3.address="河北";
demo3.name="李四";
System.out.println(demo3.name);
System.out.println(demo3.age);
System.out.println(demo3.address);
Demo3 demo4=new Demo3();
System.out.println(demo4.name);
System.out.println(demo4.address);
}
}
静态方法
静态方法在使用时,也是通过类名.方法名(参数列表)的形式调用
静态方法的特点:
在静态方法中只能调用静态的属性和方法。
在非静态方法中,可以调用静态方法和属性,也可以调用非静态的属性和方法。
在静态方法中无法使用this关键字和super关键字。
public class Demo4{
static String address="河北";
public static void main(String[]args){
System.out.println(address);
t1();
Demo4.t1();
}
public static void t1(){
System.out.println("静态方法");
}
}
静态代码块
静态代码块位于类的内部,任何方法的外部,语法:static{ }
静态代码块主要是用来给静态的成员变量进行初始化
public class Demo4{
static String address=;
static{
address="河北";
System.out.println("---------静态代码块---------");
}
public static void main(String[]args){
System.out.println(address);
t1();
Demo4.t1();
}
public static void t1(){
System.out.println("静态方法");
}
}