• 封装 继承的概念


    _继承

    1.1 

    包(package) 用于管理程序中的类,主要用于解决类的同名问题。包可以看出目录。

     

    包的作用

    [1] 防止命名冲突。

    [2] 允许类组成一个单元(模块),便于管理和维护

    [3] 更好的保护类、属性和方法 

     

    用于定义包,必须写到源文件的有效代码的第一句。

    编译带包的源文件

    javac –d  目的地  源文件

    编译完成后,Test01的全路径是cn.sxt.Test01

     

    1.1.1 命名规范

    包命名原则:始终保持类的全路径唯一。

     

    规范:

    [1]包名由小写字母组成,不能以圆点开头或结尾。圆的有特殊意义——包分隔符

     

    [2]包名之前最好加上唯一的前缀,通常使用组织倒置的网络域名。如:域名javagroup.net

    package net.javagroup.xx

    [3]包名后续部分依不同机构内部的规范不同而不同

    package net.javagroup.project1.projectname.xx

    1.1.1 导包

    import 用于导包,告诉类需要的其他类在什么位置!

    形式:

    import cn.sxt02.Student // 导入cn.sxt02下的Student类。

    import cn.sxt02.* // 导入cn.sxt02下的所有类。

    1.1.1 不同包中的同名类

    如果一个类中用到了两个不同包但同名的类时,如何处理?

    在创建对象时写全路径

    例如:

    import java.util.Date;

    import java.sql.Date;

     

     

    java.util.Date date1 = new java.util.Date();

    System.out.println(date1);

     

    java.sql.Date date2= new java.sql.Date();

    Sysrem.out.println(date2);

     

     Date date2 = new Date(0);

    System.out.println(date2);

    1.1 静态导入

    如果一个类中定义的属性和方法都是静态时,可以考虑使用静态导入。jdk1.5+ 出现。

    package cn.sxt01;

    public class Calc{

    public static float PI = 3.14f;

    public static int add(int a,int b){

    return a+b;

    }

    }

    package cn.sxt02;

     

    // import cn.sxt01.Calc;

    // 静态导入

    import static cn.sxt01.Calc.*;

    public class Test01{

    public static void main(String[] args){

    System.out.println(PI);

    System.out.println(add(1,2));

    }

    }

    1.1 继承

    1.1.1 为什么要使用继承

    为了提取两个类中公共的代码,可以使用继承抽取重复性的代码到一个公共类中,这个公共的类称为父类(super class)。继承于父类的类称为子类(sub class).

     

    java继承的特性

    [1] 单根性。在java中,一个类只能有一个直接父类。

    [2] 传递性。C继承于B,B继承于A,C具有A的特性和行为。

     

    类B继承于类A,使用关键字extends,B拥有了A中非私有的属性和方法

     

    public class Person{

    String name;

    int age;

     

    public void showInfo(){

    System.out.println("姓名:"+name);

    System.out.println(",年龄:"+age);

    }

    }

    public class Student extends Person{

     

    }

    public class Test01{

    public static void main(String[] args){

    Student s = new Student();

    s.name = "张三";

    s.age = 20;

    s.showInfo();

    }

    }

     

    1.1 Super

    super关键字表示父类对象,只是一个关键字,里面没有引用。

     

    [1]super访问父类构造方法

     

    super调用父类构造方法时,必须写到构造方法有效代码第一句

     

     super调用父类的非私有属性

    super可以访问父类的非私有属性。私有的属性不能用super访问。

     

    变量隐藏(C)

    当子类定义了一个和父类同名的属性时,在子类中优先访问子类的属性,如果要访问父类属性一定要加super。

     

    一句话:如果要访问父类属性,通过super;如果要访问子类属性,通过this.

     

    [3] super访问非私有父类方法

     super.showInfo();

    不能被子类继承的

     

    1.1 访问修饰符

    java中存在4类访问修饰符,分别是private、默认、protected、public。

     

    private:私有的,只能在本类可以访问。

    friendly:默认的,同包可访问,也称包访问权限。

    protected:受保护的, ①子类可访问 ②同包可访问 

    public:公共的,都可以访问

     

    1.1 继承关系的初始化顺序

     

     

    1.1 方法的重写

    当子类从父类继承过来的方法不能满足自身需要时,子类可以根据自身情况进行方法重写(overwrite/override)

    方法重写建立在继承的基础上,没有继承,就没有重写!

     

    子类根据自身情况,可以选择部分重写和完全重写。

     

    重写的规则

    [1]方法名称相同

    [2]参数列表相同

    [3]子类的访问权限一定 >= 父类访问权限

    [4]返回值和父类相同或者是其子类

     

    public Pet create(){

    Pet pet = new Pet();

    return pet;

    }

    public Dog create(){

    Dog dog = new Dog();

    return dog;

    }

     

  • 相关阅读:
    问题 L: Robots
    最强阵容
    [学习][Math]康托展开和逆康托展开
    [学习][STL]next_permutation
    [动态规划][数位dp]F(x)
    [动态规划][数位dp]Bomb
    [动态规划][数位dp]不要62
    [动态规划][树形dp]Bichrome Tree
    [思维]Finite Encyclopedia of Integer Sequences
    [二分答案]gpa
  • 原文地址:https://www.cnblogs.com/gflb/p/10752482.html
Copyright © 2020-2023  润新知