IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> Java面向对象2 继承,super关键字,final关键字,static关键字 -> 正文阅读

[Java知识库]Java面向对象2 继承,super关键字,final关键字,static关键字

一、继承

特点

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("静态方法"); 
}
 }

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2021-12-03 12:54:30  更:2021-12-03 12:56:06 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 3:39:27-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码