zoukankan      html  css  js  c++  java
  • 【Java】面向对象

    继承 封装 多态

    重新搞一波 复习巩固

    简单记录 慕课网 imooc Java 零基础入门-Java面向对象-Java封装

    封装

    封装是什么?

    • 将类的某些信息隐藏在类内部,不允许外部程序直接访问

    • 通过该类提供的方法来实现对隐藏信息的操作和访问

    隐藏对象的信息

    留出访问的接口

    隐藏对象的信息 留出访问的接口

    例:

    ATM机 存取款 转账 余额查询 …

    钞票 重要信息 ATM的 不能看到 不能拿走

    操作接口 插卡口 取钞口 操作屏 简单操作 获取钞票

    银行卡 密码 简单操作 拿到钞票 ATM设计原理

    钞票安全性 对外接口 用户的 便捷操作

    ATM的封装

    特点:

    1、只能通过规定方法访问数据

    2、隐藏类的实例细节,方便修改和实现

    封装

    修改属性的可见性 设为private

    创建getter/setter方法 设为public 用于属性的读写

    在getter/setter方法中加入属性控制语句 对属性值的合法进行判断

    作用:

    1、管理Java文件

    2、解决同名文件冲突

    定义包

    语法:

    package包名;

    例:package com.imooc.animal;

    注意:

    1、必须放在Java源文件中的第一行

    2、一个Java源文件中只能有一个package语句

    3、包名全部英文小写

    4、命名方式:域名倒序+模块+功能

    管理Java文件

    解决同名文件冲突

    导入包

    语法:

    import 包名.类名;

    例:

    导入包中全部类:

    import com.imooc.*;

    导入包中指定类:

    import com.imooc.animal.Cat;

    常用系统包

    java.lang 包含java 语言基础的类

    java.util 包含java语言中各种工具类

    java.io 包含输入、输出相关功能的类

    static

    1、static + 属性 — 静态属性

    2、static + 方法 — 静态方法

    3、static + 类 — 不存在

    4、static + 方法内局部变量 —不存在

    静态成员随类加载产生,直至类销毁才回收

    静态方法

    1、可以直接调用同类中的静态成员

    2、不可以直接调用同类中的非静态成员

    3、可以通过实例化对象后,对象调用的方式完成非静态成员调用

    实例化 可调用非静态的

    直接使用 类 .静态方法

    代码块

    1、通过{ }可以形成代码块

    2、方法内的代码块称为:普通代码块

    3、类内的代码块称为:构造代码块

    4、构造代码块前 + static : 静态代码块

    代码块 执行顺序

    1、无论实例产生多少对象,静态代码块只执行一次

    2、构造代码块随实例化过程调用

    3、普通代码块随方法调用执行

    Cat.java

    package com.imooc.animal;
    
    /**
     * 宠物猫类
     * 
     * @author imooc
     *
     */
    //static+类--》不存在
    public class Cat {
    	// 成员属性:昵称、年龄、体重、品种
    	// 修改属性的可见性---private 限定只能在当前类内访问
    	private String name;// 昵称 String类型默认值null
    	private int month;// 年龄 int类型默认值0
    	private double weight;// 体重 double类型默认值0.0
    	private String species;// 品种
    
    	//static: 静态 静态成员、类成员
    	//static+属性--》静态属性、类属性
    	public static int price;//售价
    	
    	
    	static{
    		System.out.println("我是静态代码块1");
    	}//静态代码块
    	
    	//构造方法
    	public Cat() {
    		//static+方法内的局部变量--》不存在
    //		static int temp=14;
    		System.out.println("我是宠物猫~~");
    	}
    
    	public Cat(int month) {
    		// this.month=month;
    		this.setMonth(month);
    	}
    
    //	{
    //		name="妞妞";
    //		price=130;
    //		System.out.println("我是构造代码块1");
    //	}//构造代码块
    //	
    	
    	static{
    		price=290;
    		Cat temp=new Cat();
    		temp.name="小胖";
    		System.out.println("我是静态代码块2");
    	}//静态代码块
    	
    	// 创建get/set方法
    	// 在get/set方法中添加对属性的限定
    	public void setName(String name) {
    		this.name = name;
    	}
    
    	public String getName() {
    		return "我是一只名叫:" + this.name + "的宠物猫";
    	}
    
    	public int getMonth() {
    		return month;
    	}
    
    	public void setMonth(int month) {
    		if (month <= 0)
    			System.out.println("输入信息错误,宠物猫的年龄必须大于0");
    		else
    			this.month = month;
    	}
    
    	public double getWeight() {
    		return weight;
    	}
    
    	public void setWeight(double weight) {
    		this.weight = weight;
    	}
    
    	public String getSpecies() {
    		return species;
    	}
    
    	public void setSpecies(String species) {
    		this.species = species;
    	}
    
    	// 成员方法:跑动、吃东西
    	// 跑动的方法
    	//在成员方法中,可以直接访问类中静态成员
    	public void run() {
    		eat();
    		this.name="妞妞";
    		this.price=20;
    		System.out.println("售价是"+Cat.price+"的"+this.name+"快跑");
    	}
    
    	public void run(String name) {
    		
    		int temp=14;
    		{
    //			int temp=12;
    			System.out.println("我是普通代码块1,temp="+temp);
    		}//普通代码块
    		
    
    		System.out.println(name + "快跑,temp="+temp);
    		
    		{
    //			int temp=13;
    			System.out.println("我是普通代码块2,temp="+temp);
    		}//普通代码块
    	}
    
    	// 吃东西的方法
    	//static+方法--》类方法、静态方法
    	public static void eat() {
    		//静态方法中不能直接访问同一个类中的非静态成员,只能直接调用同一个类中的静态成员
    		//只能通过对象实例化后,对象.成员方法的方式访问非静态成员
    		Cat temp=new Cat();
    		temp.run();
    		temp.name="小胖";//静态方法中不能使用this
    //		temp.name="小胖";
    		price=1500;
    		System.out.println("小猫吃鱼");
    	}
    }
    
    
    
    
    
    
    
    
    
    
    
    
    

    CatTest.java

    package com.imooc.animal;
    
    //单一职责原则
    public class CatTest {
    	public static void main(String[] args) {
    		// 对象实例化
    		Cat one = new Cat(3);
    		// 测试
    		// one.setName("凡凡");
    		// one.setMonth(0); //=-3;
    		// one.weight = 1200;
    		// one.species = "中华田园猫";
    
    		// System.out.println("昵称:" + one.getName());
    		if (one.getMonth() == 0)
    			return;
    		System.out.println("年龄:" + one.getMonth());
    		// System.out.println("体重:" + one.weight);
    		// System.out.println("品种:" + one.species);
    
    	}
    }
    
    

    总结

    封装是什么?

    • 将类的某些信息隐藏在类内部,不允许外部程序直接访问

    • 通过该类提供的方法来实现对隐藏信息的操作和访问

    隐藏对象的信息

    留出访问的接口

  • 相关阅读:
    转--- 一些概念不错的理解
    python 生产者 --- 消费者
    python GUI 之 tkinter
    读DataSnap源代码(二)
    读DataSnap源代码(一)
    FireDAC探索 (二)
    FireDAC内部初探
    C++Builder XE7 中“匿名”方法实现
    DelphiXE7 Datasnap TDSClientCallbackChannelManager内部实现初探
    C++ Builder使用VC DLL
  • 原文地址:https://www.cnblogs.com/liuawen/p/12114609.html
Copyright © 2011-2022 走看看