Java初学者笔记 先记着 以后忘了回来看两眼

这篇博客详细介绍了Java的基础知识,包括多态的概念,如父类引用指向子类对象,以及方法重写后的执行结果。还讲解了内部类的不同类型以及枚举类的特性,如枚举对象的数量限制和相关方法。此外,还讨论了数据类型的分类,包括基本类型和引用类型,并提到了Scanner类的使用。最后,博主阐述了面向过程和面向对象编程思想的区别,并介绍了类和对象的创建以及内存存储结构。
摘要由CSDN通过智能技术生成

多态
同一个对象 体现出来的多种不同形态(身份)将一种行为表现出不同的效果
要想实现多态的效果 需要现有的继承关系

体现:
1:父类类型的引用 指向 子类的对象
Person p = new Teacher();
2.该引用只能调用父类中定义的属性或方法
3.如果子类将父类中的方法重写,那么调取方法后执行的结果是子类重写之后的那个结果
如果父类与子类有同名的属性 执行父类的属性
如果父类与子类有同名的方法(重载) 执行子类重写之后的方法
4.若想要调用子类中独有的成员
(强制类型转化) 造型 铸型 (向上/下 转型)
5.造型时(强制向下转型时)可能会出现一个运行时异常
classcastexception 造型 铸型 异常
如果想要避免造型的异常 可以用instanceof关键字来进行判断
对象 instanceof 类

内部类
指的是在java中可以将一个类定义在另一个类的内部
内部类可以定义在 类的内部(与类成员层次一致)
内部类可以定义在 方法/块 内部(与内成员相差一个层次 方法的局部变量一个层次)

1.*成员内部类
	将一个类直接定义在类的里面,作为成员,与属性或方法层次一致
	成员内部类可以与正常类一样  使用不同的修饰符来修饰
	好处1.省略了一个.java文件  2.成员内部类中可以访问外部类的所有成员  包括私有的
	若想要在内部类中通过对象.的方式来调用外部类成员   外部类.this.外部类成员;
	内部类存在后  源代码进行编译   产生有个字节码  Demo$innerDemo.class
2.局部内部类
	将一个类定义在方法/块里面,作为成员的内部结构,与临时的局部变量一个层次
	局部内部类像是一个局部的变量一样,不能用public  protected  private  及static修饰
	只能用abstract 或者final
	局部内部类的命名规则demo$1innertestmethod  demo$2innertestmethod
	局部内部类使用的变量只能时final修饰
3*.匿名内部类
	成员匿名内部类
	局部匿内部类
	
	public interface Test{
		public void test();
	}
	public class Son implements Test{
		public void test(){
		}
	}
	Test t = new Test(){
		public void test(){
		}
	};
	通常接口或抽象类的具体子类这样写
	开发中为了省略一个类文件   上述写法比较常见
	匿名内部类很特殊  只有类体   没有类的所有结构   (修饰符   名字  继承   实现)
	不能用任何修饰符来修饰    匿名内部类 也没有构造方法
4.静态内部类
	成员静态内部类
	不需要外部类对象,通过正常的方式直接创建内部类
	只能在类中定义  作为成员
	今天该内部类不需要外部类对象操作  可以直接创建对象
	静态内部类可以范围更外部类的静态成员

==============================================================
数据类型
基本 8个
引用 数据[] 类class 抽象类abstract class 接口interface 枚举 enum 注解@interface

枚举类
一个类中的对象 认为个数是有限且固定的 可以将每一个对象一一列举出来
1.试试若没有枚举类型的时候 如何手动设计(静态常量 单例模式) Day(类 当作描述星期7个对象)
private 构造方法
public static final属性 = new
2.JDK1.5版本之后我们可以直接定义enum类型
我们自己定义的 enum类型直接默认继承Enum(java.lang)包
我们自己定义的enum类型不能再写extends 但是可以实现
Enum类型
有两个属性
name---->枚举对象的名字 name()获取name的属性
ordinal—>枚举对象在类中罗列的顺序 类似index 也从0开始 ordinal()获取序号
一些常用的方法
valueOf() 通过给定的name获取对应的枚举对象
values() 获取全部的枚举对象—> 返回一个数组 day[]
compareTo() 可以比较两个枚举对象int
tostring() 由于这个方法没有fianl修饰 可以覆盖/重写
3.swith内部判断枚举的应用

4.我们也可以在enum中描述自己的一些属性和方法
必须在enum类中的第一行 描述一些枚举的样子 最后需要分号结束
可以定义自己的属性
类创建的过程中 帮我们创建枚举类型的对象
需要给枚举类型提供对应样子的构造方法 构造方法只能private修饰 可以重载

overload —方法重载
1.概念:一个类中的一组方法 相同的方法名字 不同的参数列表 这样的一组方法构成了方法重载
参数列表不同的体现
1.参数的个数 2.参数的类型 3.参数的顺序
2.作用:为了让使用者便于记忆与调用 只需要记录一个名字 执行不同的操作
3.自己设计方法重载
调用方法的时候 首先通过方法名字定位方法
如果方法名字有一致 可以通过参数的数据类型定位方法
如果没有与传递参数类型一致的方法 可以找一个参数类型可以进行(自动)转化
4.JDK1.5版本后的新写法
int…x —> 动态参数列表 个数可以动态 0 —n都可以
x 本质上就是一个数组 有length属性 有[index]
动态参数列表的方法 不能与相同意义的数组类型的方法构成方法重载 本质是一样的
动态参数列表的方法 可以不传参数 相当于0个
数组的方法必须传参 Null都可以
动态参数列表在方法的参数中只能存在一份儿 而且必须防止在方法参数的末尾

利用类来描述显示生活中的事情
利用对象去具体的执行操作

类的内部成员
属性—静态描述类的特征(变量 存值)name
方法—动态描述类的行为(做事情)eat
构造方法—用来创建当前类的对象(方法)
程序块—理解为就是一个方法(啥也没有 只有方法 没有名字、返回值、参数、修饰符)

类中的第三个成员
构造方法—做事情
1.作用 构建(构造)当前类的对象
2.写法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值