------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------
传智基础班第6天内容笔记:
面向对象思想:面向对象是基于面向过程的编程思想;
面向对象思想特点:1、符合我们思想习惯的思想 2、将复杂的事情简单化 3、我们从执行者变成了指挥者
面向对象三个特征:1,、封装(encapsulation) 2、继承(inheritance) 3、多态(polymorphism)
封装:是指隐藏对象的属性和实现细节,仅对外提供公共访问方式
封装好处:隐藏实现细节,提供公共的访问方式
提高了代码的复用性
提高安全性
封装原则: 将不需要对外提供的内容都隐藏起来。
把属性隐藏,提供公共方法对其访问。
继承:继承是从已有的类中派生出新的类,
新的类能吸收已有类的数据属性和行为,并能扩展新的能力。
继承的好处:提高了代码的复用性; 继承的弊端:类的耦合性很强。
多个类相同的成员可以放到同一个类中;
提高了代码的维护性;
如果功能的代码需要修改,修改一处即可 让类与类之间产生了关系,是多态的前提;
继承的特点:Java只支持单继承,不支持多继承
Java支持多层继承(继承体系)
继承的注意事项:子类只能继承父类所有非私有的成员(成员方法和成员变量),其实这也体现了继承的另一个弊端:打破了封装性
子类不能继承父类的构造方法,但是可以通过super(后面讲)关键字去访问父类构造方法, 不要为了部分功能而去继承
多态概念:一个事物的多种形态,多态前提和体现有继承关系或者实现关系 有方法重写有父类引用指向子类对象
成员访问特点:方法的运行看右边,其他都看左边
多态的好处
提高了程序的维护性(由继承保证)
提高了程序的扩展性(由多态保证)
多态的弊端:
父类不能访问子类的特有方法
如果非要访问,向下转型(强转)
向上转型
从子到父
父类引用指向子类对象
向下转型
从父到子
父类引用转为子类对象
匿名对象: 就是没有名字的对象
是对象的一种简化表示形式
匿名对象的两种使用情况:
对象调用方法仅仅一次的时候
new Student().study();
作为实际参数传递
t.method( new Student() );
匿名对象实例演示:
class Student{
String name;
public void study(){
System.out.println("学习");
}
}
class NiMingDemo {
public static void main(String[] args) {
Student s = new Student();
method( s );
method( new Student() );
}
public static void method(Student a){
a.study();
}
}
封装:是指隐藏对象的属性和实现细节,仅对外提供公共访问方式
好处:
隐藏实现细节,提供公共的访问方式
提高了代码的复用性
提高安全性。
封装原则:
将不需要对外提供的内容都隐藏起来。
把属性隐藏,提供公共方法对其访问
封装实例演示:
class Person{
//成员变量私有
private int age = 18;
//提供一个公共访问方法,让别人可以设置年龄
public void setAge(int a){
//把a的值 赋值为成员变量age
if (a <= 18){
age = a;
}
}
//提供一个公共访问方法,让别人可以获取到年龄
public int getAge(){return age;
}
}
class OOPDemo {
public static void main(String[] args) {
//创建Person类对象
Person p = new Person();
//为年龄赋值
p.age = 18;
//获取age的值
int result = p.getAge();
System.out.println(result);
}
}
private关键字: 私有的
private关键字:
是一个权限修饰符。
可以修饰成员(成员变量和成员方法)
被private修饰的成员只在本类中才能访问
this关键字:
this:代表所在类的对象引用
方法被哪个对象调用,this就代表那个对象
使用this应该注意:
1,、只能在构造方法中使用this调用其他的的构造方法,不能在成员方法中使用。
2、在构造方法中,使用this调用构造方法的语句必须位于第一行,且只能出现一次。