黑马程序员_5_面向对象

来源:互联网 发布:mac移动硬盘重命名 编辑:程序博客网 时间:2024/06/06 04:31

                                        黑马程序员_5_面向对象

                                   ------- android培训、java培训、期待与您交流! ----------               


<1>封装的优点:1解决的安全问题。 2​隐藏了实现。  3操作简单。

使用步骤:1使用private关键字修饰需要封装的属性。

  1. class Person{
  2. private int age;
  3. private String name;
  4. }

​对外提供公共的get或者set方法设置以及获取私有成员的属性。

  1. class Person{
  2. private int age;
  3. public int getAge() {
  4. return age;
  5. }
  6. public void setAge(int age) {
  7. this.age = age;
  8. }
  9. }

匿名对象,没有引用类型指向对象。如:new Person();
匿名对象的应用场景:1如果调用一个对象只有一次,2 还可以作为实参传递

<2>成员变量与局部变量的区别:
a从作用上的区别:成员变量作用用意描述一类事物的公共属性,而局部变量的作用是提供一个变量给方法内部使用。
b从定义上的区别:成员变量定义在类之内,方法之外,局部变量定义在方法之内
c从生命周期区别:成员变量随着对象的创建而存在,随着对象的消失而消亡。
d从初始化的区别:成员变量初始化有默认初始值,局部变量没有默认初始值,必须先初始化才能使用。
<3>构造函数:
构造函数的作用:给对应的对象初始化使用。
定义格式:修饰符  函数名就是类名(形参列表...){};
  1. class Demo{
  2. public Demo(){};
  3. }
注意的细节:a构造函数没有返回值类型,函数名必须与类名一致。可以存在多个
b、如果一个类中没有显式的构造函数,jvm会给该类添加一个无参的构造函数,如果有,那么就不会给添加。
c、构造函数不是由我们调用的,是由jvm虚拟机自动调用,每创建一个对象,就会调用对应的构造函数一次。
<4>构造代码块:
作用:是给所以对象初始化。
格式:{
        执行的代码...
} 
<5>静态代码块:
特点:是在类加载时候就执行了。
格式:
Static{
执行的代码...
<6>this关键字
1、在java中允许存在同名的成员变量与局部变量,如果方法内部访问到同名的成员变量和局部变量时,那么默认情况是访问局部变量,<java采取就近原则机制>.
2、如果方法方法内部访问了同名的成员变量与局部变量,那么默认情况访问了局部变量,那么如果需要访问成员变量就需要使用this关键字。
this关键字代表的是当前所属函数的调用者对象。
作用:a可以通过this关键字指定访问同名的成名变量。
  1. class Demo{
  2.     int age;
  3. public void setAge(int age) {
  4. this.age = age;//把局部变量赋值给成员变量
  5. }
  6. }

b可以在构造函数内部调用另外的构造函数初始化对象。
  1. class Person{
  2. int age;
  3. String name;
  4. int id;
  5. public Person(int id,int age,String name){
  6. this(id,age);//调用另外的构造函数给对象初始化
  7. this.name=name;
  8. }
  9. public Person(int id,int age){
  10. this.id=id;
  11. this.age=age;
  12. }
  13. }
注意:1、如果在方法内部访问到变量时,该变量在方法内部不存在,只存在成员变量,那么jvm会在变量前面加上一个this关键字。
2、在构造函数中使用this关键字调用另外一个构造函数时,只能写在函数的第一个语句。
3、this关键字调用构造方法的时候不能出现互相调用。因为会进入死循环的状态,编译器会报错的。  

二:面向对象第二大特征继承
1:描述了类与类之间的关系。
2:降低了类与类之间的重复代码。
继承使用的关键字extends,继承时需要注意的细节:
1:被继承的类称之为父类,继承的类称为子类。
2:子类并不能继承父类中所有的成员,所有的私有成员不能被继承,private修饰的成员。
3:构造函数不能被继承。

三:面向对象第三大特征多态
多态使用的前提:类与类之间必须要有关系,继承或者实现。
多态的弊端:虽然提高了程序的扩展性,但是只能使用父类引用指向父类成员。
1:当父类和子类具有相同的非静态成员变量,那么在多态下访问的是父类的成员变量。
2:当父类和子类具有相同的静态成员变量,那么在多态下访问的是父类的静态成员变量。
3:当父类和子类有相同的非静态方法(子类重写父类方法),访问的是子类的成员方法。
4:当父类和子类具有相同的静态方法,访问的是父类的静态方法。

                                         ------- android培训、java培训、期待与您交流! ----------




0 0
原创粉丝点击