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

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

体现:
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.写法

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值