Java面向对象2 继承,super关键字,final关键字,static关键字

本文详细介绍了Java中的继承特性,包括单一继承和代码重用性。接着讨论了super关键字在子类中的应用,final关键字如何确保元素不可修改,以及其在变量、参数和类/方法上的不同用法。最后,分析了static关键字的作用,如静态变量、静态方法和静态代码块,以及它们在类生命周期中的行为。
摘要由CSDN通过智能技术生成

一、继承

特点

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.

在创建有继承关系的子类对象时,一定会先执行父类中的构造方法(默认执行的无参数的构造方
),然后再执行子类的构造方法。
如果在创建子类对象时,父类中不存在默认的构造方法,则程序编译错误。
如果要想解决以上问题,则可以通过super关键字来明确指明调用父类的哪个构造方法,来创建父
类对象。
2.   super关键字使用场景:
        super关键字只能出现在有继承关系的子类中
3.    super关键字的作用
        表示对当前类父类对象的引用。
可以使用super关键字,来显示说明子类中的某个属性或方法是在父类中定义的
super关键字的用法:
属性:super.属性名
方法:super.方法名(参数列表)
构造方法:只有super以super(参数列表)的形式出现在子类构造方法的第一句代码时,就表示明确了所要使用的父类构造方法。
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("静态方法"); 
}
 }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值