day07:
一.类的概念:
1.定义类:class 类名{
//类体
//成员变量
//成员方法
//构造方法
//代码块
//内部类
}
二.类和对象之间的关系:
1.类是一个概念模型,它类似于"图纸",只需要有一份;
2.对象是通过new语句在堆中产生对象空间。它类似于通过图纸生产出来的产品,可以多个;
三.封装:
1.面向对象的三个特征:1.封装、2.继承、3.多态
2.封装:
成员属性私有化,对外提供公有的成员方法为属性赋值或者获取值;
四.构造方法:
1.在实例化对象时会自动调用的方法;
2.构造方法的语法:
[访问修饰符] 构造方法名(必须与类名相同){
}
3.Java中构造方法的特点:
1).一个类可以不定义构造方法,编译器会自动添加一个默认无参的;
2).如果定义了构造方法,编译器将不会添加任何构造方法了。
3).构造方法可以重载;
4).构造方法之间可以互相调用,使用this()关键字.
5).构造方法可以调用成员方法;成员方法不能调用构造方法;
6).构造方法不能声明返回值类型,也就不能返回任何类型的值。但可以写
return;语句,表示:结束方法的执行;
五.this关键字:
1.每个类中有隐式的包含一个变量:this
2.这个变量是由JVM在实例化一个对象时,自动赋值。赋值为当前对象的引用;
3.使用this可以访问本类的:成员变量、成员方法、构造方法;
注意:使用this访问本类的其它构造方法时,必须在某个构造方法的第一有效代码;
六.匿名对象:
1.没有名字的对象;
2.Student stu = new Student();//有名的对象
new Student();//匿名对象
七.基本类型和引用类型作为方法的形参:
main(){
int a = 10;
int b = 20;
change(a , b);
System.out.println(a);//10
System.out.println(b);//20
int[] intArray = {1,3,43};
change(intArray);
System.out.println(intArray[0]);//1000
}
public static void change(int a1,int b1){
a1 = 100;
b1 = 200;
}
public static void change(int[] intArray){
intArray[0] = 1000;
}
day08:
一.继承:
1.使用关键字:extends;
2.Java中的继承的特点:
1).只能单继承;
2).可以多级继承;
3.父类中的私有成员、构造方法不会被子类继承;
4.当我们实例化子类对象时,会先实例化父类对象;
5.继承时,成员的特点:先在子类中找,如果没有,上父类中找。父类中也没有,报错;
6.方法重写:
1).在子类中定义跟父类一样(返回值类型、方法名、形参列表)的方法,这叫:方法的重写
2).重写时,子类的访问修饰符可以跟父类相同,也可以比父类更宽;
7.方法重载和方法重写的区别:
1).方法重载:是指在一个类中;
方法重写:要有子父关系,在子类中定义跟父类中相同的方法;
8.当实例化子类对象时,会先实例化父类对象,此时JVM会自动调用父类中空参的构造方法。
如果父类中没有空参构造方法,子类中的任何构造方法都要显示的使用super()调用父类中带参的构造方法;
二.抽象类:
1.定义:abstract class
2.抽象类中可以定义:
1).普通、静态成员变量;
2).普通、静态成员方法;
3).构造方法;
4).抽象方法;
3.抽象类的作用:
1).作为父类,代码重用;
2).对子类形成一种约束;
day09:
一.接口:
1.定义:interface
2.接口中可以定义:
1).成员变量:必须是public static final
2).抽象方法:必须是public abstract
3.子类实现接口使用关键字:implements
4.子类可以同时实现多个接口;
5.接口的作用:
1).对子类的功能扩展;
2).接口多态
6.类和类:继承关系,使用关键字extends,只能单继承;
类和接口:实现关系,使用关键字implements,可以同时实现多个接口;
接口和接口:继承关系,使用关键字extends,可以多继承;
二.多态:
1.父类的引用指向子类的对象;
2.多态的好处:
1).提高了代码的可扩展性;
2).提高了代码的可维护性;
多态的弊端:
1).多态时,不能访问子类特有成员;
3.多态时,成员的访问规则:
1).总体规则:多态时,访问的成员在父类中必须要有,否则编译错误;
2).成员变量(子父类中都有):编译看左边,运行看左边;
成员方法(子父类中都有):编译看左边,运行看右边;
静态方法(子父类中都有):编译看左边,运行看左边;
4.多态的转型:
1).向上转型:
Animal a = new Cat();
2).向下转型:
if(a instanceof Cat){
Cat c = (Cat)a;
}
三.static关键字:
1.可以修饰:成员变量、成员方法;
2.修饰成员变量:表示:静态变量,被多个对象共享;存在静态存储区,只有一份存储空间。
修饰成员方法:表示:静态方法;
3.静态成员的访问方式:
1).通过类名可以调用;
2).通过对象名也可以调用;
4.静态变量和成员变量的区别:
1).所属不同:
静态变量属于"类"
成员变量属于"对象"
2).存储位置不同:
静态变量存储在"方法区--静态存储区"
成员变量存储在"堆"中
3).生命周期不同:
静态变量随着类的加载而加载,随着类的消失而消失;
成员变量实例化对象时,会加载到堆中;被垃圾回收器回收时,被清理;
4).调用方式不同:
静态变量:使用类名调用;使用对象名调用;
成员变量:使用对象名调用;
四.final关键字:
1.修饰类:表示"最终类",不能被继承;
修饰方法:表示"最终方法",不能被子类重写;
修饰变量(局部、成员):表示"常量",只能被赋值一次,之后不能被修改;
基本数据类型:值不能改;
引用数据类型:引用不能改;
day10:
一.包:
1.创建包:package语句;
2.package语句在一个源文件中最多只能有一个;可以没有;
3.package语句必须放在这个文件的第一行有效代码上;
4.导入包:import xxx.xxx.xxx.类名;
或者:
import xxx.xxx.xxx.*;
5.import语句在源文件中可以有多条;
6.import语句必须放在package语句之后,类定义之前;
7.java.lang包中的类可以直接使用,不需要导包;
二.访问修饰符:
1.宽到窄:public,protected,(默认),private
2.public(公有):可以修饰类、类成员。表示任何包下的其它类都可以访问;
protected(受保护的):可以修饰类成员。同包下访问。包外,可以被子类内部访问;
(默认):可以修饰类、类成员。只能被同包下访问;
private(私有):可以修饰类成员。只能被类内部其它成员访问;
三.类和类成员常用的修饰符:
1.类:访问修饰符:public ,默认
abstract
final
2.成员变量:访问修饰符:四种
static
final
3.构造方法:访问修饰符:四种
4.成员方法:访问修饰符:四种
abstract
static
final
三.代码块:
1.静态代码块:
2.构造代码块:
3.局部代码块:
4.执行顺序:
静态代码块
构造代码块
构造方法
四.内部类:
1.成员内部类:
定义在类体中,可以访问外部类成员,包括私有的;
2.局部内部类:
局部内部类访问局部变量,要求局部变量声明为final.
3.匿名内部类:
new 父类/父抽象类/父接口 (){
//匿名子类的类体
//重写父类的方法
}
|
|