• package,继承,访问修饰符


    1.package

    包(package),用于管理程序中的类,可用于处理类的同名问题。

    1.1定义package的方法

    package 包名;

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

    1.2编译带有包的源文件

    在控制台编译有包的源文件,javac -d 目的位置 源文件位置。如下

    1.3.import导包

    同一包中的其他类可以直接使用。

    如果要使用不在同一个包中的类,需要用import导入。

    import java.util.Scanner;//导入java.util下的Scanner类

    1.3.1如果要使用到不同包中,但是名字相同的类要如何处理呢?以导入java.util.Date;和java.sql.Date;为例。

    1 java.util.*;  //导入java.util下所有的类
    2 
    3 java.sql.Date;//导入java.sql下的Date类

    1.3.2静态导入

    静态导入,在jdk1.5后开出现的。当类中的属性和方法都是静态的时候可以使用。如下

    1 package cn.qd01;
    2 public class Calc{
    3     public static float PI = 3.14f;
    4     
    5     public static int add(int a,int b){
    6         return a+b;
    7     }
    8 }
     1 package cn.qd02;
     2 
     3 // import cn.bd.Calc;
     4 // 静态导入
     5 import static cn.qd.Calc.*;
     6 public class Test01{
     7     public static void main(String[] args){
     8         System.out.println(PI);
     9         System.out.println(add(1,2));
    10     }
    11 }

    2.继承

    假如有两个类,dog类和cat类。它们都有相同的属性或方法,如String name,int weight等等。这时我们可以用继承,我们创建一个pet类,pet包含dog类和cat类相同的属性和类。让dog类和cat类继承pet类。

    那么dog类和cat拥有pet类中的非私有的属性和方法。

    这个公共的类称为父类(super class),继承于父类的类称为子类(sub class)。

    java继承有两个特性:

    1.单根性。java一个类只能有一个直接父类。

    2.传递性。C继承于BB继承于AC具有A的特性和行为。

    2.1super

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

    super关键字用法:

    【1】访问父类构造方法

    1 public Dog(String name,int weight,int health,String stain){
    2         super(name,weight,health);
    3         this.setStrain(strain);
    4 }        

    super调用构造方法时,必须写在构造方法有效代码的第一句。

    【2】调用父类非私有属性

    1 public class Fruit{
    2     float price;
    3 }
     1 public class Apple extends Fruit{
     2     
     3     public void showInfo(){
     4         // 不推荐使用
     5         //System.out.println("价格:"+price);
     6         //System.out.println("价格:"+this.price);
     7         // 当需要访问父类的属性时,优先使用super
     8         System.out.println("价格:"+super.price);
     9     }
    10     
    11 }

    【3】访问父类非私有方法

    1 public void print(){
    2         /*
    3         System.out.print("我的昵称"+super.getName());
    4         System.out.print(",健康值"+super.getHealth());
    5         System.out.print(",体重"+super.getWeigh());
    6         */
    7         super.showInfo();
    8         System.out.println(",我是一只"+this.getStrain());
    9     }

    2.2子类继承父类的资源

    以下情况是,父类不能被继承的成员

    1.private成员

    2.构造方法

    3.子类和父类不在同一个包下,使用默认修饰符的成员

    3.访问修饰符

    访问修饰符共有4种,private,默认,protect,public.

    修饰符

    本类✘

    同包子类

    同包其他类

    不同包子类

    不同包其他类

    private

    ✔ 

    默认

    protected

    public

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

    2.friendly/default:默认,包可访问也称包访问权限。

    3.proteck:保护的, ①子类访问 ②同包可访问

    4.pulic:公共,可以访问

    4.继承关系的初始化顺序

    继承关系内存图

    5.方法的重写

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

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

    方法重写,分为部分重写和全部重写,可视个人情况不同选择。

    部分重写

    1 public void showInfo(){
    2         super.showInfo();
    3         System.out.println("我是一只"+this.getStrain());
    4     }

    全部重写

    1 public void showInfo(){
    2         System.out.println("--"+super.getName()+"--");
    3         System.out.println("健康值:"+super.getHealth());
    4         System.out.println("体重:"+super.getWeight());
    5         System.out.println("品种:"+this.getStrain());
    6     }

    重写规则

    [1]方法名称相同

    [2]参数列表相同

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

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

    1 public Pet create(){
    2         Pet pet = new Pet();
    3         return pet;
    4 }
    1 public Dog create(){
    2         Dog dog = new Dog();
    3         return dog;
    4 }
  • 相关阅读:
    修炼一名程序员的职业水准_转
    system执行shell命令
    (转)MySql数据库索引原理(总结性)
    (转)SQL Server基础之存储过程(清晰使用)
    (转)菜鸟学数据库(三)——存储过程
    (转)菜鸟学数据库(二)——触发器
    (转)SqlServer基础之(触发器)(清晰易懂)
    (转)菜鸟学数据库(一)——三范式
    (转)HTTP 协议详解(基础)
    (转)HTTP协议漫谈
  • 原文地址:https://www.cnblogs.com/qq308015824/p/10753413.html
Copyright © 2020-2023  润新知