java学习日记(8-13)

###############  day08 eclipse 使用   #####################
Alt+/ 自动补全 syso
shift + enter 到下一行行首
ctrl+shift+f 格式化代码
ctrl+/ 单行注释
ctrl+shift+/ 多行注释
ctrl+shift+o 导包
Alt+上下箭头 移动代码行
ctrl+d 删除
ctrl+1 意见提示

// 块编辑 alt+shift +a
// 变大写 ctrl+shift+x
// 变小写 ctrl+shift+y
// 向下复制一行 alt+ctrl+↓
// 向下添加一个空行 shift + enter
// 向上添加一个空行 ctrl+shift + enter
// 删除一行 选中行 ctrl+d
// 注释或者去掉注释 ctrl+/
// 向下移动一行 alt + ↓


import导入工程

############## day09 类 day10 继承 ##########################
局部变量没有默认值,跟随方法进入栈中
成员变量跟类对象进入堆中
private 修饰成员变量,本类可见
类方法的就近访问原则
this.name 同C++的this指针
p.speak() 在调用的时候,同时把地址传给this

extends java单继承
子类调用成员变量,方法,重名时采用就近原则
也可用this,super表明本类与父类
implements 实现接口,必须重写所有方法

override 重写
子类方法的权限大于等于父类方法的权限

public
protected 可以在不同包下子类中使用
default 本包内使用,不写任何权限, 默认为default
private

public abstract class 抽象类,不能实例化对象
public abstract void work(); 抽象方法必须存在抽象类中
只要有抽象方法,就一定是抽象类
抽象类可以没有抽象方法

子类必须重写父类抽象方法

################### day11 接口 ##################
interface 成员方法全抽象,成员变量为常量
public abstract 返回值类型 方法名(参数列表) # 成员方法必须此格式
public static final int a = 1;
# 可以不写修饰符,选择性写修饰符,但本质是一样的

可以实现多接口,但多个接口不能有相同的(函数名,参数列表)返回值不同
接口可以 extends 别的多个接口

多态 FU f = new ZI()  父类(接口)引用指向子类对象
出现自动类型提升,子类提升为父类类型,向上转型
只能调用父子共有的方法,不能调用子类特有的方法
ZI z = (ZI)f 向下转型

#多态

成员变量,静态成员方法
编译看父类
运行看父类
f.a 调用的是父类的成员变量,若无,报错

非静态成员方法
编译的时候看父类
运行的时候看子类

instanceof 判断一个引用变量是不是某个类对象
p instanceof People

########### day12 构造方法,this, super ##########
构造方法格式 权限 类名(参数列表) 同C++,默认有无参构造方法规则,同C++

this(参数列表) 在一个构造函数中调用另一个构造函数,必须写在构造函数的第一行
参数列表应匹配相应构造函数的参数列表

super(参数列表) 在子类构造函数中调用父类构造函数,参数列表可为空(调用空参)
子类中的构造方法会自动调用父类的无参构造方法(若没有显示调用父类构造方法)
第一行
super. 调用父类的成员函数与成员变量

super(), this() 不能同时出现

子类内存空间分为父类空间和子类空间,同C++
子类的所有构造方法都要直接、间接的调用父类构造函数

########### day13 final static 匿名对象 内部类 包 ########
# final
修饰类, 不可被继承
修饰方法, 不能被重写

修饰变量, 一次赋值,不能被改变, 同C++ const

修饰引用数据类型, 变量保存的内存地址不能改变 同C++ const

修饰成员变量
成员变量的赋值,在创建对象前赋值
1、final int age= 1; 直接赋值(recommend)
2、构造方法赋值
final int age;
public People(int age)
{
this.age = age;
}

# static 同C++
修饰类成员, 成为对象共享数据,不属于某个对象,类共有,同C++
可以用类名调用, 存在于静态区,有默认值

public static final String SCHOOL_NAME = "itcast";
常量大写,单词之间加下划线
匿名对象:做参数,做返回值

内部类可以使用外部类成员
外部类要使用内部类的成员,必须建立内部类对象

调用规则
外部类名.内部类名 变量 = new 外部类().new 内部类();
变量.内部类成员

同名变量的调用
调用外部类成员 outer.this.i;
调用内部类成员 this.i;
调用局部变量 i;

局部内部类
在方法里面建立内部类对象,对象进行调用

# 匿名内部类

定义实现类,重写方法,创建实现类对象一步完成

new 接口/父类(){
重写抽象方法
}.方法;

多态的方式
接口/父类 变量 = new 接口/父类(){
重写抽象方法
};
变量.方法1;
变量.方法2;

class XXX implements Smoking{                                      new Smoking(){
  public void smoking()    等价于            public void smoking() 
  { }                           {   }
}                           }.smoking();

XXX x = new XXX();
x.smoking();

包相当于文件夹   包名网址反写

代码块执行顺序
static 代码块,只执行一次
构造代码块
构造方法

WE ARE ALL IN THE GUTTER, BUT SOME OF US ARE LOOKING AT THE STARS
原文地址:https://www.cnblogs.com/YKang/p/7260033.html