面向对象的三大特征

面向对象特征之封装

1.封装的种类:
一段代码,你写了三遍 ==> 封装成方法
一堆方法,你用了三遍 ==> 封装成工具类
一个工具类,你使用了三遍 ==> API

重要的在于封装的思想。

2.JavaBean规范的封装格式必要性

在Java中定义符合JavaBean规范的类有什么要求
   1. 所有的成员变量全部私有化 ==> private
   2. 必须提供一个无参数构造方法
   3. 要求使用private修饰的成员变量提供对应的操作方法 ==> Setter Getter
  1. JavaBean中的private
package com.qfedu.a_private;
/*
* Private关键字使用
*/
class Dog {
   private String name;
   int age;
   char gender;
   
   public void testField() {
   	// 类内可以直接使用私有化private修饰的成员变量
   	name = "Bobo";
   	test();
   }
   
   private void test() {
   	System.out.println("烤羊排!!!");
   }
}


public class Demo1 {
   public static void main(String[] args) {
   	Dog dog = new Dog();
   	
   	// 没有使用private约束的情况下,类外可以使用
   	// 当成员变量使用private修饰之后,当前成员变量类外没有操作权限
   	// The field Dog.name is not visible
   	// dog.name = "王可可";
   	dog.age = 5;
   	dog.gender = '雌';
   	
   	// The method test() from the type Dog is not visible
   	// 使用private修饰的方法类外不能使用
   	// dog.test();
   }
}

private关键字是一个权限修饰符,private修饰的成员变量,成员方法,【构造方法】都是私有化内容,有且只能在类内使用,类外没有任何的操作权限!!!

4.javaBean 中的set、get

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

	public char getGender() {
		return gender;
	}

5.对象的生成

Factory factory = new Factory();        
                                      
// 通过修理店对象,调用修理电脑的方法                  
// 需要的参数是Computer类对象                  
factory.repair(computer);  

匿名对象:
匿名对象:
new 构造方法(必要的参数);
匿名对象的用途:
1. 使用匿名对象直接调用类内的成员方法
2. 匿名对象直接作为方法的参数
注意:
使用匿名对象不要操作成员变量,有可能是有去无回
优势:
1. 阅后即焚,匿名对象在使用之后 立即被JVM GC收回
2. 解决内存空间,提高效率,简化代码书写


面向对象特征之继承

1.继承的方式:extends

  1. 子类继承父类之后,可以使用父类的非私有化成员变量和成员方法
    【非私有化成员】
    2. 子类不能继承得到父类的私有化内容。

2.调用父类的构造方法:super()
3.对父类方法的重写:为了解决父类的方法不能满足目前子类的需求时使用

@Override
严格格式检查
要求重写方法的和父类中的方法,声明完成一致,返回值类型,方法名和形式参数列表

4,抽象:对父类继承过来的方法强制性的实现


abstract使用总结:
	1. abstract修饰的方法没有方法体
	2. abstract修饰的方法必须定义在abstract修饰的类内或者interface接口内
	3. 一个普通类【非abstract】修饰的类,继承了一个abstract类,那么必须实现在abstract类内的所有abstract,强制要求
	4. 如果一个abstract A类继承另一个abstract B类,A类可以选择实现B类中abstract方法。
	5. abstract修饰的类内允许普通方法
	6. abstract修饰的类不能创建自己的类对象!!!
	【原因】
		abstract修饰的类内有可能存在abstract修饰的方法,而abstract修饰的方
		法是么有方法体的,如果说创建了abstract修饰类对应的对象,不能执行没
		有方法体的abstract方法
	7. 一个类内没有abstract修饰的方法,那么这个类定义成abstract类有意义吗?
	没有必要的!!!无意义的!!!

5 .final

final修饰的成员变量
	final修饰的成员变量定义时必须初始化,并且赋值之后无法修改,一般用于类内带有名字的常量使用
final修饰的成员方法
	final修饰的成员变量不能被子类重写,为最终方法,可以用于一些安全性方法的定义
final修饰的局部变量
	final修饰的局部变量一旦被赋值,不能修改!
final修饰的类
	final修饰的类没有子类,不能被继承。
	abstract修饰的类不能被final修饰。

6.static(公用)
静态变量


1. 静态成员变量是使用static修饰的成员变量,定义在内存的【数据区】
2. 静态成员变量不推荐使用类对象调用,会提示警告
   The static field SingleDog.info should be accessed in a static way
   使用static修饰的SingleDog类内的info成员变量,应该通过静态方式访问
3. 静态成员变量使用类名调用是没有任何的问题。【墙裂推荐方式】
4. 在代码中没有创建对象时,可以通过类名直接使用静态成员变量,和【对象无关】
5. 代码中对象已经被JVM的GC销毁时,依然可以通过类名调用静态成员变量,和【对象无关】
6. 不管通过哪一种方式调用静态成员变量,修改对应的静态成员变量数据,所有使用到当前静态成员变量的位置,都会受到影响。

静态方法

  1. 静态成员方法推荐使用静态方式调用,通过类名调用【墙裂推荐的】
    不推荐使用类对象调用,因为【没有对象】
  2. 静态成员方法中不能使用非静态成员 ==> (非静态成员方法和非静态成员变量)
    因为【没有对象】
  3. 静态成员方法中不能使用this关键字
    因为【没有对象】
  4. 静态成员方法中可以使用类内的其他静态成员【难兄难弟】
  5. 静态成员方法中可以通过new 构造方法创建对象
    单身狗可以找对象
    不能挖墙脚但是能自己找

补充知识点:
static

1.类似于一块公共区域,谁都可以使用,谁都可以改变,但是不属于任何人。

2.静态成员变量:直接类名调用。

3.和对象无关

4.静态成员方法:类名直接调用

                             不能使用非静态成员(因为没有对象,  )

                             不能使用this

                              可以自己找对象

静态的特点:

1.随着类的加载而加载 也就是,说静态会随着类的消失而消失,说明静态的生命周期最长

2.优先于对象的存在 明确一点:静态是先存在的对象是后存在的

3.被所有对象共享

4.可以直接被类名多调用

实例变量和类变量的区别

1.存放位置

类变量随着类的加载存在于方法区中,实例变量随着对象的对象的建立存在于堆内存里

2.生命周期

类变量生命周期最长,随着“类”的加载而加载,随着类的消失而消失

实例变量随着“对象”的消失而消失

静态的使用注意事项:

1.静态方法只能访问静态成员(包括成员变量和成员方法)

非静态方法可以访问静态也可以访问非静态

2.静态方法中不可以定义this,super关键字

因为静态优先于对象存在,所以静态方法中不可以出现this,super关键字

3.主函数是静态的。

静态代码块

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值