Java初级笔记_面向对象2

------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------

Java基础知识

一、封装

     A:封装的引入

         通过学生案例,给年龄赋值为负数引出数据问题。
  然后通过private解决这个问题。最后说其实这就是封装。
  

       B:封装概述

         是指隐藏对象的属性和实现细节,仅对外提供公共访问方式。

       C:封装好处

         隐藏实现细节,提供公共的访问方式。类,方法等其实都是封装的具体体现。
  提高了代码的复用性
  提高安全性。

       D:封装原则

          将不需要对外提供的内容都隐藏起来。
  把属性隐藏,提供公共方法对其访问。

       E:常见的应用

          类中的所有成员变量私有,给出对应的get/set方法。

       F:代码实现:

  class Student{
private String name;
private int age;


public Student(){}
public Student(String name,int age){
this.name = name;
this.age = age;
}

public void setName(String name){
this.name = name;
}
public String getName(){
return name;
}

public void setAge(int age){
this.age = age;
}
public int getAge(){
return age;
}
}

二、private this static关键字

   A:private关键字的概述和特点

         1) private关键字特点

           a:是一个权限修饰符
      b:可以修饰成员变量和成员方法
      c:被其修饰的成员只能在本类中被访问
  

         2) private最常见的应用

              (1):把成员变量用private修饰
      (2):提供对应的getXxx()和setXxx()方法

     B:this关键字的概述和应用

       A:为什么要有this 

              当我们的局部变量和成员变量相同的时候,如果我们不使用this关键字,那么会导致一个问题:就是局部变量隐藏了               成员变量的问题

         B:this关键字特点

              是一个关键字,代表当前类的对象引用。

   简单记:在方法中,哪个对象调用方法,this就代表谁。       

         C:this的应用场景

             解决局部变量隐藏成员变量问题。
     在构造方法中调用其他的构造方法(必须写在第一行)        this();
     在其他方法中可以使用this.普通方法名()调用普通方法     this.eat();

     C:static关键字

         1)概述

             是一个关键字。可以修饰成员变量和成员方法。

         2)静态的特点

             a:随着类的加载而加载
     b:优先于对象存在
     c:被类的所有对象共享
     d:可以通过类名调用

   3)静态的注意事项

             a:在静态方法中是没有this关键字的。
     b:静态方法只能访问静态的成员变量和静态的成员方法。

  4)静态内容的调用

             a:被对象调用
     b:被类名调用

          5)什么时候该用static

             如果某个内容是所有对象共享的,就用静态修饰。
     例如:
水杯和饮水机。
厕所和人。
老师和学生。

三、继承(extends)

      A: 概述:

            把多个类中的相同的属性和行为进行抽取,封装到一个类中,
    然后再建立新类的时候,不需要从头做起,继承刚才定义的那个类即可。
B:好处:
     a:提高代码的复用性。
     b:让类与类之间产生了一个关系,是多态的前提。
C:什么时候使用继承
     a:如果类之间存在着:  is a 的关系,就可以考虑使用继承。
     b:不要为了继承部分功能,而去使用继承。
D:继承的特点
     a:Java只支持单继承,不支持多继承。
如果支持多继承,就会有调用不明确的问题。
     b:Java支持多层(重)继承。也就是说java中的接口支持多继承
E:super和this的区别
     a:super是一个关键字,代表父类的存储空间标识。(可以理解为父亲对象的引用)
     b:它和this的用法相似
1:成员变量
this.变量--本类的
super.变量--父类的
2:构造方法
this(...)--本类的
super(...)--父类的
3:成员方法
this.方法名()--本类的
super.方法名()--父类的
F:子父类中成员变量的用法:
     a:名称不同,这个太简单了。
     b:名称相同,子类对象的在使用的时候:
先找子类局部范围
再找子类成员范围
最后找父类成员范围
父类的父类成员范围
G:子父类中成员方法的用法:
     a:名称不同,这个太简单了。
     b:名称相同,子类对象的在使用的时候:
先找子类的
再找父类的
     c:方法重写
在子类中,方法声明(修饰符,返回值,方法名,参数列表)相同的情况。
注意事项
  1:父类中私有方法是不能被重写
  2:子类方法的访问权限一定要大于等于父类的访问权限
  3:静态只能重写静态。(这个不能算,因为静态跟类相关)
H:子父类中构造方法的用法:
     a:子类的初始化过程中,首先回去执行父类的初始化动作。
  因为子类的构造方法中默认有一个super()。
   为什么?子类要使用父类的成员变量,这个初始化,必须在子类初始化之前完成。
   所以,子类的初始化过程中,会先执行父类的初始化。
     b:如果父类没有无参构造方法
   1:使用super调用父类的带参构造。推荐方式。
   2:使用this调用本身的其他构造。

      (1)执行顺序:
静态代码块 --> 构造代码块 --> 构造方法
默认初始化>显式初始化>构造代码块初始化>构造方法初始化
(2)注意事项:
静态代码块只执行一次

四、面向对象小结

     A:创建对象时的执行动作:
栈内存开辟空间存储引用变量
    使用new创建内存空间
    调用构造方法
    成员变量默认初始化
    成员变量显示初始化
    构造函数初始化
    对象创建结束,将地址赋值给引用变量

1:定义类
私有成员属性
至少一个空参的构造方法
普通方法
公共的get/set方法通常手动放在最后

2;使用类创建对象
定义引用类型变量用来引用对象
使用new关键字与构造方法完成对象创建
在构造方法的同时对成员变量赋值
使用get/set方法操作成员变量
使用对象名.方法名(参数)调用对象函数
       

创建对象的过程,在这里可以理解为调用构造方法的过程
构造方法
用来创建对象的方法。
在创建对象的同时,可以直接为属性赋值。

如果没有手动给出构造方法,则系统会默认给出空参的构造。
构造方法特点:
函数名与类名相同,与函数名标识符命名原则相悖
不进行返回值类型的定义
构造方法没有返回值

构造方法之间以重载的方式存在

------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值