3.29~3.30总结

文章介绍了Java中的继承概念,包括如何使用`super`调用父类方法,以及多态的特性。同时讲解了包的作用,它是组织类的一种方式,确保类的唯一性,并提到了如何导入和使用包。此外,还讨论了成员变量和局部变量的区别,以及组合在类复用中的角色。
摘要由CSDN通过智能技术生成

  

目录

继承

使用super调用父类中重写的方法、访问父类中被隐藏的字段

多态

 组合

常见修饰符学习:半成品


成员变量和局部变量

成员变量是在类里面定义的变量,局部变量是在方法里面定义的变量;

成员变量又分为实例变量和类变量,用static修饰的就是类变量,不用static修饰的变量就是实例变量;

与成员变量不同的是,局部变量必须初始化之后才能访问它,不然就会出错;、

包(package) 是组织类的一种方式,使用包的主要目的是保证类的唯一性.例如:你在代码中写了一个 Test 类. 然后你的舍友也可能写一个 Test 类. 如果出现两个同名的类, 就会冲突, 导致代码不能编译通过。

Java已经帮我们提供了很多现成的类供我们使用,我们在调用他们的时候使用import语句来导入包;

使用 import static 可以导入包中的静态的方法和字段.

将类放到包中

基本规则:在文件的最上方加上一个 package 语句指定该代码在哪个包中
包名需要尽量指定成唯一的名字, 通常会用域名的颠倒形式(例如 com.bit.demo1 ).
包名要和代码路径相匹配. 例如创建 com.bit.demo1 的包, 那么会存在一个对应的路径 com/bit/demo1 来存储代码.
如果一个类没有 package 语句, 则该类被放到一个默认包中

详细请看

Java的常见包:
java.lang:系统常用基础类(String、Object),此包从JDK1.1后自动导入。
java.lang.reflect:java 反射编程包;
java.net:进行网络编程开发包。
java.sql:进行数据库开发的支持包。
java.util:是java提供的工具程序包。(集合类等) 非常重要
java.io:I/O编程开发包

这些包现在不用太过于了解,后面会随着学习的深入继续了解

继承

继承是面向对象的三大特征之一,也是实现软件复用的重要手段,Java的继承有单继承的特点,每个子类只有一个直接父类;

Java的继承通过extends来实现,实现继承的类是子类,被继承的类是父类;比如水果和苹果的关系,苹果继承了水果,苹果是水果的子类,则苹果是一种特殊的水果;

父类的范围要比子类的大,可以认为父类是大类,子类是小类;
Java里面子类继承父类的语法格式如下:

修饰符 class Wife extends girlfriend_1{
    //类定义部分;
}

在这里wife是你定义的子类的类名,girlfriend_1父类的类名;

 具有继承关系的子类和父类:子类具有父类的全部成员变量,方法和内部类(包括内部接口和枚举),值得提出的是,子类不能继承父类的构造器;

​ 这里面Wife类是girlfriend类的子类;

 

既然学了继承,那我们就要知道如何去重写父类的方法;

重写父类其实很简单,就是要注意“两同两小一大”规则,“两同”即方法名相同,形参列表相同;“俩小”指的是子类方法返回值类型应该比父类的要小或者相等;“一大”指的是子类方法的访问权限要比父类大或者相等;

这里,我在Wife类里面重写了wedding方法 ,原本的girlfriend类里面的wedding方法输出的是女朋友,但是经过重写后,变成了妻子;

使用super调用父类中重写的方法、访问父类中被隐藏的字段

 当你想要调用父类中被重写的方法,就可以通过super关键字来实现,super和this一样都不能出现在static修饰的方法中;

多态

先看下面代码:

package xuexi1;

public class girlfriend_1 {
    public String girlfriend="李思敏";
    public void base(){
        System.out.println("父类的普通方法!");
    }
    public void text(){
        System.out.println("父类被覆盖的方法!");
    }
}
class Wife extends girlfriend_1{
    //类定义部分;
    public String girlfriend="王丹";

    public void text(){
        System.out.println("子类覆盖父类的方法!");
    }
    public void sub(){
        System.out.println("子类的普通方法!");
    }
    public static void main(String[] args) {
        girlfriend_1 a=new girlfriend_1();
        System.out.println(a.girlfriend);
        a.base();
        a.text();
        Wife b=new Wife();
        System.out.println(b.girlfriend);
        b.base();
        b.text();
        girlfriend_1 c=new Wife();
        System.out.println(c.girlfriend);
        c.base();
        c.text();
        //c.sub;
    }
}

其中创建了三个引用变量a,b,c;其中a,b编译时类型和运行时类型完全相同,但是c编译时类型为girlfriend,但是他在引用时类型为Wife类型这就会出现多态了;下面是多态的一些特点;

  1. 多态的前提1:是继承
  2. 多态的前提2:要有方法的重写
  3. 父类引用指向子类对象,如:Animal a = new Cat();
  4. 多态中,编译看左边,运行看右边

强制类型转换

1.基本类型的强转:只能在数值类型之间进行,这里所说的数值类型包括整形,字符型和布尔型;但是要注意的是,数值类型类型和布尔类型之间不能相互转换;

2.引用类型之间的转换只能在具有继承关系的两个类之间转换,如果试图将一个父类类型的实例转换成子类实例;

为了能够更好的了解类型转化,我看见一个讲的比较好的博客;

向上转型和向下转型
 

instanceof

用来判断一个对象是否是一个类或者其子类,实现类的实例,如果是则返回true,否则返回false;

使用格式:

对象名 + instanceof + 类名 

多态的使用 

前提:多态对象把自己看做是父类类型

  1. 成员变量: 使用的是父类的
  2. 成员方法: 由于存在重写现象,所以使用的是子类的
  3. 静态成员: 随着类的加载而加载,谁调用就返回谁的

 组合

组合和继承都是实现类复用的手段,他们两个个有个的优点和缺点;

 组合和继承的联系

常见修饰符学习:半成品

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值