栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java笔记1.05

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java笔记1.05

昨天的学习回顾
方法,方法重载
构造,构造方法重载
如何调用构造方法和父类的构造方法(this构造和super构造)
奇特的析构(这析构是继承于Object类的)
何时析构?用C++的话来说就是一块内存丢失,就会调用析构。
某块内存的地址丢失,导致内存泄漏。

protected void finalize() throws Throwable
system.gc(); //立即回收垃圾

继承,全体父类Object还要多了解
对象转换,子类可以存储父类?不太能理解

可能是这样?父类如果存储子类会造成空缺?
而反过来就可以对应上?
猫是动物,动物不是猫;

重写,真*重写

1. 多态

基于昨天学的,转换对象的特性,因此,方法也可以根据不同类型的对象,产生不同的结果。称之为多态
实际上:重载子类的方法,也可以称作多态

执行以下代码,我们可以看到,根据构造函数构造的对象不同,所调用的方法也不一样

public class test01 {
    public static void main(String[] args) {
        c1 test01 = new c2();
        test01.function();
        c1 test02 = new c1();
        test02.function();

    }
}

class c1 {
    int a = 10;

    void function() {
        System.out.println(a);
    }
}

class c2 extends c1 {
    void function() {
        System.out.println("this is c2");
    }

}

2. Java 包

Java语言规定,一个编译单元中只能有一个public类
且该类名与文件名相同,也就是第一篇时所讲到的

编译后——>每个类生成一个.class——>解释器解释执行

不同类中的方法和变量名不会混淆,唯一要注意的是类名的不同
不同包中类名可以相同,包是用于分隔类的
类是用于分隔方法和变量
包是分隔类的,包可以嵌套

  1. import导入包
    导入scanner和arrys包,然后就可以使用这两个包中的类了
    和文件夹路径一样
import java.util.Arrays;
import java.util.Scanner;
// 导入util下的全部包
import java.util.*

// 从util包中导入Data类,直接用到程序中
 java.util.Date =new  java.util.Date();

静态导入,静态导入后就不用写前缀了

import static java.lang.System.out;;

public class use {
    public static void main(String[] args) {
        out.println("this is test static");
    }
}
2. 类加入包,包的制作与使用

文件夹结构

// 要打包的类
public class test1 {
    int number = 0;

    public test1(int number) {
        this.number = number;
    }

    public void getNumber() {
        System.out.println(number);
    }
}

运行,生成类包
注意删除掉test1.java
usepackage.java运行

import test.test1;		// 从相对路径导入test1类

public class usepackage {
    public static void main(String[] args) {
        test1 t1 = new test1(10);
        t1.getNumber();
    }
}

封装…把方法和变量归结到一块,组成一个类
类变量…类里面的变量
类方法…类里面的方法
值得注意的是静态的,静态方法或变量为一整个类共享
final修饰:让该类失去生育能力,不可再派生子类,也称为终极类
也有终极变量(常量const),终极方法(不可重写)

3. 抽象类

就是c++中的虚基类
基类和方法都是给后续继承做准备
如果继承这个类,必须重写方法,或者照父类,只声明

public abstract class c1{
	public void function(){
	// 这是抽象方法
	}
//这就是一个抽象类
}
4. 接口

由于java不支持多重继承,所以,有了接口这个东西
不过多重继承哪个东西确实花,烧脑汁

  1. 接口的定义
    定义和类没两样,但是要注意,方法不能实现,变量必须初始化,且为常量
    public class classname extends fathername{}
    public interface interfacename extends fathername{}

  2. 接口的使用
    同样,接口也需要实现,但不同的是,一个类可以继承多个接口,实现了多继承
    实现接口的类,必须实现接口中所有抽象方法

public class usepackage {
    public static void main(String[] args) {
        c1 test01 = new c1();
        test01.function();

    }
}
// implements 后面跟接口名,可以多个
class c1 implements i1 {
    @Override
    public void function() {
        System.out.println("this is i1 function");
    }
}
// 接口中的方法默认就是抽象的
interface i1 {
    public void function();
}
5. 内部类

在一个文件中写几个类,运行后就会生成多少个.class文件,这就使得项目架构复杂
内部类可以访问外部类所有成员,包括私有权限

public class usepackage {
    int num = 10;

    public static void main(String[] args) {
        c2 test1 = new c2();
        test1.print();
    }

}

class c2 {
    int num = 10;
    c1 test01 = new c1();

    // print方法调用内部类方法
    public void print() {
        test01.function();
    }

    // 这就是内部类,可以为抽象类型,可以是接口类型
    public class c1 {
        public void function() {
            System.out.println("this is inner class");
            System.out.println("一个内部类对象可以访问创建它的外部类对象的内容,甚至包括私有变量" + num);
        }
    }
}

匿名类
一个局部类只需要使用一次的时候
由于匿名类没有类名,那么除了定义它的地方,其他地方无法调用,所以匿名类也可以叫匿名内部类
这匿名类我咋越看越像继承多态?就是一个类不确定它是子类还是父类,给他不同的参数,执行不同操作

包装类
java面向对象,方法参数也都是对象,基本数据类型却不是“对象”
所以提供了拆箱和装箱,也就是对象和基本类型的互转
java有着自动拆装箱功能

遇到运算符号,就拆箱
当遇到对象运算,对象列表,装箱

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/874233.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号