欢迎光临散文网 会员登陆 & 注册

Java面向对象视频教程全集-璇女神主讲【课工场】

2021-08-31 09:37 作者:我不会java和pr  | 我要投稿



循环(do while )




2.6 方法传参-对象数组 P17 - 12:02



这里的空指针异常是因为我创建了一个新的数组,也规定了这个数组的长度,但是数组里面的每个下标我都没有放进去对象,然后就对着空对象进行直接的属性改变/虽然系统不报错,但是运行的时候就会有错误,以后遇到这种情况必须要先给数组创建对象




方法的命名要遵循驼峰命名规则(首个单词小写,之后每个单词的首字母都大写)



2.7 构造方法 P18 - 07:15


构造方法没有返回值。构造方法名字和类名一样

构造方法类似与给创建的元素进行初始化。


系统默认提供无参(所以我们创建对象的时候可以直接调用无参的构造方法)

但是如果我们自定义了有参的构造方法,系统就不在再默认提供无参构造方法!

Student stu = new Student();

这里 就是调用了无参构造方法


创建带参的构造方法就是给元素的进行初始化

public class Student{

String name;

int age;

}

public class Student(String name,int age){

this.name = name;

this.age = age; / / 这里就引申出了this的用法

}


this是对一个对象的默认引用

可以调用本类的属性 this.age=age;

可以调用本类的普通方法 this.add();

可以调用本类的构造方法 this(name);

(this调用本类的构造方法,必须是写在第一行)


public class Student(String name,int age){

this.name = name;

this.age = age;

}

//调用本类构造方法

public class Student(String name,int age, int score){

this.(name.this ); //语法注意:使用this必须是构造方法的第一个语句

//调用构造方法Student(String name,int age)

this.score=score;

}



2.8 方法重载 P19 - 04:25


方法重载(同名不同参)

同一个类中,方法名相同,参数个数或者类型不同,与返回值和访问修饰符无关



2.9 成员变量和局部变量 P20 - 00:33


成员变量和局部变量

作用域不同:

属性:成员变量(全局变量)

局部变量:作用域是一个方法或者一个语句块


初始值不同:

JAVA会给成员变量一个初始值

java不会给局部变量一个初始值,局部变量必须初始化赋值以后使用

(同一个类中,成员变量和局部变量同名时,局部变量具有更高的优先级)


带参方法如何定义和使用?

基本数据类型和引用数据类型在参数传递时的区别是什么?

构造方法有何作用?如何定义?

方法重载有何特点?

成员变量和局部变量的区别?



封装与继承


何为封装:把类的某些信息隐藏起来,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问。属性私有,方法公开。

两大原则:1.把所有属性藏起来

2.把尽可能多的东西藏起来,对外提供便捷的接口。


如何实现封装:

1.修改属性的可见性:设为private,防止错误的修改

2.创建共有的getter/setter方法(getter是属性的读取/setter是属性的赋值和操作)

3.在getter/setter加入属性控制语句


封装的好处:

1.便于使用者正确使用系统,防止程序修改属性

2.有助于系统之间的松耦合,提高系统独立性

3.提高软件的可重用性

4.降低了构建大型项目的风险



3.5 包 P26 - 24:52


1.包名由小写字母组成,不能以圆点开头或结尾

2.包名之前最好加上唯一的前缀,通常使用组织倒置的网络

3.包名后续部分依不同机构内部规范而不同


书写规范:

package只能有一句(必须放在第一句)

import可以有多句

紧接着是类的声明


3.6 访问权限控制 P27 - 03:36


访问权限控制修饰符:


同包的测试类及可以访问public修饰的类,也可以访问默认修饰符修饰的类

不同包的测试类及只可以访问public修饰的类,不可以访问默认修饰符修饰的类


public:公有访问级别

默认修饰符:包级私有访问级别

类的访问修饰符有两种

类成员的访问修饰符由四种

作用域  当前类 同一package 子孙类    其他

public   √       √      √    √ 

protected  √     √     √   × 

friendly默认 √      √       ×    × 

private   √       ×     ×   × 


static修饰符可以修饰:

*成员变量

静态变量,可以直接通过类名访问

*成员方法

静态方法,可以直接通过类名访问

*代码块

静态代码块,当Java虚拟机加载类时,就会执行该代码块(只调用一次)


继承

类图中的三角符号代表继承



子类和父类满足 is-a 的关系才能使用继承.继承是实现代码重用的重要手段之一,java中只支持单根继承


子类无法继承父类的private成员

同包的子类父类默认修饰符可以访问,不同包则不可以

子类可以继承父类的protected成员,不管是不是同包


子类继承了包的public,protected修饰的属性和方法(不管是否同包)。继承了默认访问修饰符修饰的属性和方法(必须同包)。


编写父类:

【访问修饰符】class Pet{

//公共的属性和方法

}


编写子类:

【访问修饰符】class Dog extends Pet{

//子类特有的属性和方法

}


实现封装的步骤是什么?

如何床架和引用包?

常用的访问权限控制符有哪些?

static在java中的应用场景以及使用注意事项是什么?

继承有何好处?

如何实现继承?

子类能(不能)继承父类的什么?


方法重写和多态

父类:提供共性方法


方法的重写或者方法的覆盖 (overriding)

子类根据需求对父类继承的方法进行重新编写

重写是,可以用super.的方式来保留父类的方法

构造方法不可以被重写


super介绍(super访问父类成员)

访问父类方法 super.print();

访问父类属性 super.name;

访问父类构造方法 super(); super(name,health,love);



使用super关键句字,super代表父类对象

super只能出现在子类的方法和构造方法中

super使用构造方法时,只能放在第一句

super不可以调用父类的private属性

调用父类的父类就用super就好


super使用场景:

子类调用父类方法

可以使用super调用子类覆盖掉的父类的同名成员



继承条件下构造方法的调用规则:

*子类构造方法没有通过super显式调用父类的有参构造方法,也没有通过this显式调用自身的其他构造方法:系统默认调用父类的无参构造方法

*子类构造方法通过super显式调用父类的有参构造方法:执行父类相应的构造方法,而不执行父类的无参构造方法

*子类构造方法通过this显式调用自身的其他构造方法,在相应构造方法中应用以上两条规则


方法重写规则:

*方法名相同

*参数类型相同

*返回值类型相同或者是其子类

*访问权限不可以严于父类

*父类的静态方法不能被子类覆盖为非静态方法,谷类的非静态方法不能被子类覆盖为静态方法

*子类可以定义与父类同名的静态方法,以便在子类中隐藏父类的静态方法(静态方法无法使用super)

*不能抛出比父类方法更多的异常


静态方法可以直接通过类名去调用。



方法重载是同一类中同名不同参

方法重写是父子类中同名同参


Object类

是所有类的直接或者间接父类


Object类的equals()方法

比较两个对象是否为同一个对象,是则返回true

操作符:==

简单数据类型,直接比较值:如1==2

在Object类的equals方法与==没有区别

比较两者(引用类型)是否为同一对象:==或equals都可以判断


重写Object类的方法

重写equals方法原因是:当有特殊需求的时候,比如在实际生活应用当中,认为属性相同就是同一对象时,就需要重写equals方法


重写方法的快捷操作:Alt+Shift+s调出界面


可以重写的父类方法

instanceof运算符:用来判断某个对象是否为某种类型--- 对象名 instanceof 类型名

这里的student s = (student)obj;强制转换是因为如果不强制转换点不出来.num 和 .name




instanceof 用于判断一个引用类型所引用的对象是否是一个类的实例

java.lang.String 重写了equals()方法,把equals()方法的判断变成了判断其值。也重写了toString()方法


//重写toString():对象信息不要反悔类似内存地址的信息,而是返回学生姓名给我。

@Override

public String toString() {

return this.name;

}


多态(动态绑定)

为什么使用多态?

掌握什么是多态?

多态:同一个引用类型,使用不同的实例而执行不同的操作。

父类类型指向子类对象:

Pet dog = new Dog();

继承和方法重写是实现多态的基础

多态:同一个引用类型,使用不同的实例而执行不同的操作

继承和方法重写是实现多态的基础

应用:父类引用指向子类对象


抽象类和抽象方法


抽象类不能被实例化,实例化没有任何实际意义。不可以直接new抽象类,但是可以new子类

例如不可以:Pet p = new Pet();

但是可以: Pet p = new Dog();


有抽象方法的类一定是抽象类

抽象类中不一定要有抽象方法

一个抽象类里面的抽象方法必须被子类实现,除非子类也是抽象类。


向上转型和向下转型

如何实现向上转型

如何实现向下转型

熟练掌握instanceof的使用


向上转型:父类的引用指向子类对象,自动进行类型转换

<父类型> <引用变量名> = new <子类型>();

Pet pet = new Dog();

此时通过父类引用变量调用的方法是子类覆盖或继承父类的方法,不是父类的方法。

此时通过父类引用变量无法调用那个子类特有的方法。



使用向上转型以后无法调用子类的独有方法时,可使用向下转型

向下转型:如果没有转换为真实的子类类型,此时会引发ClassCastException


4.13 向上(向下)转型 P46 - 13:40


java提供了instanceof运算符来进行类型的判断,可以避免向下转型时的异常




4.13 向上(向下)转型 P46 - 17:45




多态的两种使用方式:

*使用父类作为方法的形参:是java中实现和使用多态的主要方式

*使用父类作为方法的返回值,也是java实现和使用多态的主要方式




4.14 多态的两种使用方式 P47 - 01:15


多态:根据具体的动物子类,调用其重写后的shout。







方法重写的规则是什么?

super的作用是什么?

继承下构造方法是如何执行的?

Object类有奶爸写方法常被子类重写?

如何实现多态?

多态有哪两种常用的应用方式?


抽象类和接口:


抽象类和普通类的区别:

抽象类不可以被实例化。但是可以创建 一个引用变量,其类型是一个抽象类,指向非抽象的子类实例

抽象类里可以有非抽象的构造方法,创建子类时


6.2 抽象类 P62 - 18:19


构造方法就是创建对象以后进行初始化

子类创建对象时,先调用父类的构造方法,在调用子类的构造方法





抽象方法vs普通方法

*有无方法体



接口

概念性的接口:指系统对外提供的所有服务

interface定义的实实在在的接口

[访问修饰符] interface 接口名称 [extends 其他的接口名]{

//声明变量

//声明方法

}

接口不可以有构造方法。抽象类虽然不可以实例化,但是可以有构造方法,因为构造方法可以让子类实现父类构造方法的复用。


接口可以被当作类型使用:


实现类必须实现接口中的全部抽象方法,除非实现类也是一个抽象类。如果子类中有方法(接口中的抽象方法)没有实现,那么这个方法在子类中也定义为抽象类,子类变成抽象类。



虽然接口不是父类。但这种写法也是对的:父类引用指向子类对象



方法的分类:普通方法 抽象方法(abstract) 静态方法(static) 默认方法(default)

默认方法可以被继承,通过实例调用






先继承再实现

为什么jdk8以后新增接口特性??


6.5 JDK8新增接口特性 P65 - 21:57






is a 使用继承关系

has a 使用接口

抽象类和接口 异同:

*相同点:

代表系统的抽象层

都不能被实例化

都能包含抽象方法(用于描述系统提供的服务,不必提供具体实现)

*不同点:

在抽象类中可以为部分普通方法提供默认实现。JDK8之前接口中只能包含抽象方法,JDK8之后接口就可以包含默认方法了

一个类只能继承一个直接的父类,但可以实现多个接口


使用原则:

接口的好处:

提高了程序的可维护性和可拓展性

提高了程序的规范性

提高了程序的安全性

接口代表着一种 能力 约定 标准


6.12 面向接口编程4 P72 - 02:26





何时声明全局静态常量:公用的,含义确定的,值也不变的



6.13 抽象类和接口总结 P73 - 11:04



面向对象设计原则:

多用接口,少用继承()

针对接口编程

针对拓展开放,针对改变关闭

Java面向对象视频教程全集-璇女神主讲【课工场】的评论 (共 条)

分享到微博请遵守国家法律