首页 > 其他分享 >继承特点、访问特点、方法重写1

继承特点、访问特点、方法重写1

时间:2024-03-29 21:58:53浏览次数:24  
标签:子类 void 特点 访问 println 父类 重写 public out

1.继承的特点:

①子类可以继承父类的属性和行为,但是子类不能继承父类的构造器;

   //子类有自己的构造器,父类构造器用于初始化父类的对象

②java是单继承模式,一个类只能继承一个直接父亲;

③java不支持多继承、但是支持多层继承;

④java所有的的类都是Object的子类;

//Java中的所有类,要么直接继承Object,要么默认继承Object,要么间接继承Object,Object是祖宗类。

那么子类是否可以继承父类的私有成员呢,我认为是可以的,但是不能直接访问。

子类是否可以继承父类的静态成员?

有争议的知识点,子类可以直接使用父类的静态成员(共享并非继承)

比如:

package prac2;

public class ExtendsDemo {
    public static void main(String[] args) {
        Student str = new Student();
       Student.inAdder();
        System.out.println(Student.onlineNumber);
    }
}

class People{
    private int age;
    public void run(){
        System.out.println("人都会跑!");
    }
    public static int onlineNumber = 12;
    public static void inAdder(){
        System.out.println("学习java");
    }
}

class Student extends People{

}

2.访问特点:

①在子类中访问成员(成员变量、成员方法)满足就近:就近原则

如果子父类中,出现了重名的成员,会优先使用子类的,那么该怎么办?

   可以通过super关键字,指定访问父类的成员。(格式为:super.父类成员变量/父类成员方法)

   它先在子类局部范围找,然后在子类成员范围找,然后在父类成员范围找,如果还没找到就报错

具体如下:

  

public class ExtendsDemo2 {
    public static void main(String[] args) {
        Wolf s = new Wolf();
        System.out.println(s.name);
        s.showName();

    }
}
    class Animal{
        public String name = "父类的动物";
    }
    class Wolf extends Animal{
        public String name = "子类的动物";
        public void showName(){
            String name = "局部变量";
            System.out.println(name);//局部的
            System.out.println(this.name);//子类的
            System.out.println(super.name);//父类的
        }
    }
E:\develop\Java\jdk-17\bin\java.exe "-javaagent:E:\idea\IntelliJ IDEA Community Edition 2023.3.4\lib\idea_rt.jar=65027:E:\idea\IntelliJ IDEA Community Edition 2023.3.4\bin" -Dfile.encoding=UTF-8 -classpath E:\code\stduy1\out\production\stduy1 prac2.ExtendsDemo2
子类的动物
局部变量
子类的动物
父类的动物

Process finished with exit code 0

public class ExtendsDemo2 {
    public static void main(String[] args) {
       Stu a = new Stu();
       a.run();
       a.go();

    }
}
    class Peo{
        public void run(){
            System.out.println("人可以跑");
        }
    }
    class Stu extends People{
        public void run(){
            System.out.println("学生可以跑很快");
        }
        public void go(){
            run();
            super.run();
        }
    }

E:\develop\Java\jdk-17\bin\java.exe "-javaagent:E:\idea\IntelliJ IDEA Community Edition 2023.3.4\lib\idea_rt.jar=65361:E:\idea\IntelliJ IDEA Community Edition 2023.3.4\bin" -Dfile.encoding=UTF-8 -classpath E:\code\stduy1\out\production\stduy1 prac2.ExtendsDemo2
学生可以跑很快
学生可以跑很快
人都会跑!

Process finished with exit code 0

3.方法重写:

定义:在继承体系中,子类出现了和父类中一模一样的方法声明,我们就称子类的这个方法是重写的方法

应用场景:当子类需要父类的方法,但父类的给功能不能完全满足自己的需求时;

                  子类可以重写父类中的方法

列如:

//父类
public class Phone {
    public void call(){
        System.out.println("打电话开始");
    }
    public void message(){
        System.out.println("发送短信开始");
    }
}
//子类
public class NewPhone extends Phone{

    @Override
    public void call() {
       super.call();
        System.out.println("开始视频通话");
    }
    @Override
    public void message() {
        super.message();
        System.out.println("支持发送图片和视频");
    }
}
//测试代码
public class Text {
    public static void main(String[] args) {
        NewPhone huawei = new NewPhone();
        huawei.call();
        huawei.message();
    }
}

输出:

E:\develop\Java\jdk-17\bin\java.exe "-javaagent:E:\idea\IntelliJ IDEA Community Edition 2023.3.4\lib\idea_rt.jar=64845:E:\idea\IntelliJ IDEA Community Edition 2023.3.4\bin" -Dfile.encoding=UTF-8 -classpath E:\code\stduy1\out\production\stduy1 methodoverride.Text
打电话开始
开始视频通话
发送短信开始
支持发送图片和视频

Process finished with exit code 0

@Override是放在重写后的方法上的,作为重写是否正确的校验注解

建议重写方法都加上Override注解

4.方法重写的注意事项和要求

①重写方法的名称、形参列表必须与被重写方法的名称和参数列表一致

②私有方法不能重写

③子类重写父类的方法时,访问权限必须大于或等于父类

④子类不能重写父类的静态方法,如果重写会报错

标签:子类,void,特点,访问,println,父类,重写,public,out
From: https://blog.csdn.net/2301_81147503/article/details/137126877

相关文章

  • Sql Server设置用户只能查看并访问特定数据库
    1.新建登录用户以管理员身份登陆数据库(权限最高的身份如sa),点击安全性->登录名,右键新建登录名,输入登录名和密码,取消强制实施密码策略。 2.将服务器角色设置为public 3.将public服务器角色的属性->取消查看所有数据库的权限点击安全性->服务器角色->public,右键属性。点击服务......
  • 因有人突然访问自己的qq空间因而看自己曾经的qq空间和《头脑特工队》有感
    人的成长真的失去太多太多,多到可以让一个人的外在表现完全改变,足以让你无法相信你曾经是这样一个人,现在的我甚至连朋友圈都不敢发,也不敢随便点赞,总怕某某人看到怎么,我彻底懵了,我怎么转变这么大的?我再也回不到当时人与人间的关系,那么纯真那么自然那么简单,现在人与人之间仿佛有一层......
  • ssh实现linux机器之间的互相访问和命令控制
    在Linux系统之间互相访问并通过命令控制可以通过多种方式实现,其中最常用的方法是使用SSH(SecureShell)协议。SSH是一个提供加密的网络协议,通过它可以安全地在不安全的网络上进行远程登录和其他网络服务。以下是使用SSH实现Linux系统之间互相访问的基本步骤:1.安装SSH服务在两台Li......
  • 新能源充电桩站场视频汇聚系统建设方案及技术特点分析
    随着新能源汽车的普及,充电桩作为新能源汽车的基础设施,其安全性和可靠性越来越受到人们的关注。为了更好地保障充电桩的安全运行与站场管理,TSINGSEE青犀&触角云推出了一套新能源汽车充电桩视频汇聚管理与视频监控方案。方案采用高清摄像头对充电桩周围进行实时监控,确保充电桩的安......
  • 【群晖】白群晖如何公网访问
    【群晖】白群晖如何公网访问在使用默认配置搭建好的群晖NAS后,我们可以通过内网访问所有的服务。但是,当我们出差或者不在家的时候也想要使用应该怎么办呢?目前白群提供了两种比较快捷的方式,一种是直接注册白群的帐号,使用官方提供的QuickConnect进行访问,但是这种访问方式......
  • 【容器源码篇】Set容器(HashSet,LinkedHashSet,TreeSet的特点)
    文章目录⭐容器继承关系......
  • odoo owl 如何重写父类方法
    当你不想修改源码,又想在控件中新增自己参数的时候,你就可以这么干1/**@odoo-module*/2import{Order,Orderline}from"@point_of_sale/app/store/models";3import{patch}from"@web/core/utils/patch";45patch(Orderline.prototype,{6getDisplay......
  • 花了100块大洋搞懂 ipv6的用户如何访问ipv4 服务器
    大家好,今天蓝胖子花了100多块搞懂了ipv6的用户如何访问ipv4服务器,将收获与大家分享下。ipv4和ipv6的协议栈不同,这意味着,其对应的ip包的封装和解析不同,那么只支持ipv4的机器就无法直接与ipv6的服务器进行通信。但目前已经有越来越多人使用ipv6进行通信,如果仅仅让服务器支持ipv4,......
  • hbase - [04] java访问hbase
     需要导入jar包$HBASE_HOME/lib下的所有jar包$HADOOP_HOME/share/hadoop/common的所有jar包 packagecom.harley.hbase.test;importorg.apache.hadoop.conf.Configuration;importorg.apache.hadoop.hbase.NamespaceDescriptor;importorg.apache.hadoop.hbase.Tabl......
  • fatal: 无法访问 ‘https://github.com/pupupupupi/mysql_8.0.31.git/‘:Failed to con
    解决方法:1.更新系统:sudoaptupdatesudoaptupgrade2.安装git:sudoaptinstallgit3.验证git是否成功安装git--version//以上步骤如果已操作可以忽略此时我们发现可以clone了:如果仍不能clone,检查连接的网络状态,例如把校园网切换为手机热点或者是其他网速好的网络!!!本......