封装和继承

封装和继承

面向对象的三大特性:

  • 封装
  • 继承
  • 多态WW

1. 掌握封装的使用

1.1 封装的作用

**封装:**类和对象章节 当时学到的是半成品的封装。学会发现类,发现类的属性、类的行为。

**另外一半的封装概念:**将一些不安全的信息进行封装(保护),然后将可以直接被我们使用的部分开放出来(接口)。(提升安全性和可用性,有面向接口编程的思想)

使用步骤: 未来这些类组件都应该采用封装来进行信息保护

  • 属性私有化(private)
  • 提供公共的getter(getXX())和setter(setXX())方法
  • 根据需求在setter和getter方法中添加逻辑判断

1.2 一般JavaBean的规范

JavaBean:其实指的就是我们那些对象类。

  • 属性私有化
  • 提供公共的getter和setter方法
  • 提供无参构造
  • 实现序列化接口(序列化其实就是我们的对象在流之间进行转换的一种概念)

1.3 封装的优势

我们未来开发的系统应该非常接近于 高内聚、松耦合(低耦合)

1. 便于使用者正确使用系统,防止错误修改属性。简单说就是安全 前面属性的例子 自动提款机(钱放在那里,用户自己存钱取钱 自己改存折上的数据不行 取款机要点钱)

2. 有助于系统之间的松耦合(低耦合),提高系统独立性。当某一个系统的实现发生变化时,只要它的接口不变,就不会影响其他的系统,例如:我修改了属性名,如果没有封装,我需要修改程序中不同类n处使用到这属性名的地方,而用了封装,我只需要修改好当前这个类里面向外部提供的方法(接口API)就可以了,因为外部只是在使用我这个方法名而已。

3. **提高软件的可重用性。**每个系统都是一个相对独立的整体,可以再多种环境中得到重用。如干电池在相机、手电筒、剃须刀都能使用。

4. 降低了构建大型系统的风险。即使整个系统不成功,个别的独立子系统有可能依然有价值,比如相机损坏了,但电池依然有用,可以安装在手电筒中。

2. 掌握包组织结构

2.1 包的作用

package:从第二章节就开始创建了

它的作用就是用于对源代码进行分包管理,方便我们开发和阅读,另外也在一定程度上解决了同一个文件夹下无法出现同名文件。

规范: 要求包名全部小写

公司域名的倒序 + 应用程序名 +[部门名称]+[功能模块]

开发的:Tim:com.tencent.tim.xxx

Android应用 将包作为了一种区分不同应用程序的一个要素。

另外还依靠于签名。

2.2 导包

在我们使用类的时候:(一个类使用另一个类)

  1. 如果是在同一个包中使用某个类,那么直接可以进行使用。

  2. 如果是在不同的包中使用某个类,必须先进行导包(import)。

  3. 如果使用的是java.lang包下的内容的话,不需要导包。例如:System、Math… (这是JVM自动导入)

    例如:
    	import java.util.Scanner; // 导包  因为不在一个包中 JVM也不知道从哪去找你要的这个类
    	public class Test{
    	
    		public void method(){
    			Scanner input = new Scanner();
    			input.nextInt();
    		}
    	
    	}
    

包声明语法(必须出现在文件中的第一行有效代码):package 包地址;

导包的语法(必须出现在类声明上方,包声明下方):import 类的全限定名/全类名; 例如:java.util.Scanner;

如果需要用到java.util包中的很多内容:那么可以直接`import java.util.*;`

快捷键:Ctrl+Shift+O

3. 掌握Java中的访问权限修饰符[访问级别]

访问修饰符:在类的语法和方法的语法上

访问修饰符不仅可以修饰属性、也可以修饰方法、还可以修饰类。

  • private
  • [package/default] 当你不写访问修饰符时 代表的就是包级别的访问
  • protected
  • public
作用域 修饰符同一个类中同一个包中子类中任何地方(同一个项目)
private
默认修饰符
protected(了解)
public

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bRJyQ3zq-1570512485664)(封装和继承.assets/1569553225589.png)]

在一个类文件中,被public修饰的类的名称必须和文件名相同。

一般情况下不会在一个类文件中定义多个类。

public class Person {

	private String name;
	int age;
	public double weight;
	protected String gender;
	
	public void method1() {
		System.out.println(name);
		System.out.println(age);
		System.out.println(weight);
	}
}
class HeHe{
	
}
class HoHo{
	
}

4. 掌握static关键字[有难度]

static:如果被它修饰的方法,在调用非static修饰的方法时,必须先创建对象才能使用。

static表示静态的,被它修饰的信息要和JVM运行时数据区-方法区打交道。

它可以修饰:

  • 属性:类属性/类变量/静态变量 可以通过类名直接调用

  • 方法:类方法/静态方法 可以通过类名直接调用

  • 代码块:静态代码块

    为了在某种时机下执行的一段代码而已。

    静态代码块只执行一次,在类加载的时候执行。

    构造代码块会随着对象创建而执行,优先于构造方法执行。

    public class Dog {
    
    	public Dog(){
    		System.out.println("构造方法执行了!");
    	}
    	
    	// 代码块/成员代码块/构造代码块/非静态代码块
    	{
    		System.out.println("构造代码块执行了!");
    	}
    	
    	// 静态代码块
    	static {
    		System.out.println("静态代码块执行了!");
    	}
    	
    }
    
public class Test{

	public static void main(String[] args){
		Test test = new Test();	
		test.method1();
	}
	
	public void method1(){
	
	}
}

注意事项:

  • static修饰的信息都是属于类的信息,它们会随着类的加载而进行初始化。

      int num;
      
      public static void method1(){
          sout(num); //同下
      	//method2(); //因为当method1()加载时 method2还未初始化 所以我们才会先创建对象再去使用
      }
      public void method2(){
      	method1(); // method1已经在类加载的时候 加载完了 所以可以正常使用
      }
    
  • static修饰的信息是可以被类的所有对象共享的。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值