一个星期快速自学java编程高级语言干货笔记 -面向对象-封装

封装

面向对象的三大特性:封装(基础、简单)、继承、多态。(抽象)
(一般来说就是只有三大特性,但是有些地方会出题四大特性,所以最后要把抽象加上。平常来说是可以不加抽象的)
1.面向对象和面向过程的编程思想和编程方式。
2.了解生活中的类和对象
3.程序中如何从生活中抽象出类和对象
4.Java中类和对象的使用
5.方法:面向对象的核心
    1.方法的分类 4大种
    2.方法的使用
    3.构造方法
    4.this
    5.方法重载
    6.成员变量和局部变量

1.理解封装的作用

1.可以有效解决不和里赋值的问题
2.可以降低程序之间的耦合性。(牵连小)
3.可以提升代码的复用性。
4.降低了大型系统的风险。。。

2.掌握封装的使用

1.将属性私有化(添加private修饰符)
2.给属性提供对应的公共的(public)getter/setter方法
3.根据需求在对应的方法中添加逻辑控制语句

合理的JavaBean规范(拓展)

1.属性私有化
2.提供公共的getter和setter方法
3.提供无参构造
4.实现序列化接口 serializable

import java.io.Serializable;
/**
 Java Bean规范
 */
 public class Person implements Serializable{
	private static final long serialVersionUID = 1564156415315L;
	private String name;
	private int age;
	private char gender;
	
	// Alt + Shift  +S ->  r  +  Alt+A全选  -> Alt+r确认生成
	
	public String getName(){
		return name;
		}
	public void setName(String name){
	this.name = name;
	}
	public int getAge(){
	return age;
	}
	public void setAge(int age){
	this.age = age;
	}
	public char getGender(){
	return gender;
	}
	public void setGender(char gender){
	this.gender = gender;
	}
	public Person(){
		super ();
		}
}

宠物店案例:结合封装来实现

需求:
   阿狸宠物商店贩卖宠物猫和宠物狗
      客户可以选择购买宠物狗或者是宠物猫
      客户可以选择狗的品种
      客户可以选择猫的性别
      最后打印购买的宠物的信息

3.会使用Java的包来组织类

package
公司的域名的倒序,包名全部小写。
为什么使用包
      因为在同一个文件夹下,是无法存放多个同名文件内容的,
      因为在同一个文件夹下,如果所有文件都放在一起,无法有效的进行区分和查找。
      可以根据包来定义访问权限。
      模仿了Windows等系统的树形结构目录
如何使用包:
     那么一定要在使用类中声明包的导入语句。import 要引入的类地址:例如使用Scanner、Arrays
     如果不这样做,JVM就无法确认该类型的地址,也无法区分多个同名类型
     import 导入包声明需要放在package声明下,类声明上的位置,他们之间的位置顺序固定。
     java.lang 包下的内容是不需要手动导入!例如:System、String
例如:

package cn.kgc.dome1;
// 导入时 可以使用精细导入(全类名 / 全限定名 / 全/类路径) 也可以使用批量同配导入
import java.ueil.Scanner;
public class Test{
}

包的命名规范:
     公司域名的倒序,包名全部小写。
     我在腾讯(www.tengcent.com)的通讯部做微信开发
     com.tencent.部门名称.weixin.***(不同公司的包命名方式会有出入)

4.理解和掌握使用访问修饰符

public 公共的 在整个项目中都能用
private 私有的 只能在一个类中使用
默认/包级访问修饰符(default / friendly)什么也不加就是默认访问修饰符 只能在同一个包中使用。
potected 受保护的 和继承中的子类和父类有关。
它们可以用来修饰类、方法、属性…

public class 类名{
	public String name;
	public void show(){
	}
}
修饰符\作用域 同一个类 同一个包 子类 项目任何地方
private × × ×
默认/包级 × ×
protected ×
public

5.static关键字(有难度)

static 静态的
public static void main (String[] args){
}

1.static修饰的信息是属于类的,它是随着类的加载而加载的。
2.我们没有被static修饰的信息是费静态/实例的,多个实例/对象之间的信息是相互隔离。而static修饰时被多个实例共享。
3.被static修饰的信息可以直接采用类名。的形式调用,也可以使用对象来调用(不推荐)

加载顺序

static可以用来修饰属性、方法,还可以用来修饰代码块
静态代码块 -> 构造代码块 -> 构造方法
疑问
当出现了父类、子类关系后.
父类的相关代码和方法 与 子类的相关代码块和方法 加载魂虚如何?

public class Student {
	public String name;
	public int age;
	public static int classID;

	// 每一次创建对象都会执行 有限构造方法执行
	// 代码块/构造代码块/成员代码块/非静态代码块
	{
		System.out.println("构造代码块执行了");
		}
		public Studend(){
			System.out.println("构造方法执行了");
			}
			// 静态代码块  它随着类加载而出现  所以只会在【第一次】创建对象时执行
			static{
					System.out.println("静态代码快执行了!");
					}
	}

猜你喜欢

转载自blog.csdn.net/weixin_44793608/article/details/89073111