包的概念以及面向对象的编程思想

上一篇:无头双向链表的实现

一、 包

1、 基本概念

包 :本质上就是用文件夹来管理java文件的。是组织类的一种方式。

包是有规范的;包的命名一般全都是小写;并且一般是倒着写的。

 www.baidu.com——》com.baidu(公司名字).www
 //可以用拼音com.xiyou.www

创建包的时候,要在代码前加上package包的路径(尤指命令框中,软件中写会自动出现)。

2、 如果有包。如何在命令框底下去编译?

在代码里加上package com.路径
编译的时候路径是反斜杠\;运行的时候是点号。

3、 JVM在哪里启动的?

一般都是默认的,在哪里运行就在哪里启动。

4、 java.util底下放的都是工具类

5、 当一个java class里有多个java.util,可合并在一起,即导入util底下所有的包。

import java.util.Date;
import java.util.Arrays;
//可合并简写如下:
import java.util.*;

Java.lang包底下的所有东西,全部不需要自己导入,编译器会自动导入java.lang。

6、 访问权限:public , private , protected

如果没有加以上三个权限,则称为包访问权限
包访问权限即只能访问同一个包中的内容。

Demo1.java
package com.bit.demo;
   public class Demo1 {
     int value = 0; 
 }
Demo2.java
package com.bit.demo;
public class Demo2 {
   public static void Main(String[] args) {
       Demo1 demo = new Demo1();
       System.out.println(demo.value);
   }
} // 执行结果, 能够访问到 value 变量 10

7、常见的系统包

java.lang:系统常用基础类(String、Object),此包从JDK1.1后自动导入。
java.lang.reflect:java 反射编程包;
java.net:进行网络编程开发包。
java.sql:进行数据库开发的支持包。
java.util:是java提供的工具程序包。(集合类等) 非常重要
java.io:I/O编程开发包

二、面向对象的编程思想

1、什么是面向对象?

面向对象程序设计的基本思想是将现实中的事物抽象为对象,抽象出来的对象被赋予相应的状态和行为,通过对消息的响应完成一定的任务。对象都具有以下两个共性:具有一定的状态(形态)和特性

2、抽象

Java的核心是面向对象编程,面向对象编程的一个实质性的要素就是抽象,人们通过抽象来处理复杂性。

3、面向对象编程的3个原则

封装

体现封装性:private,被 private所修饰的属性或者方法均不能在类外进行访问或者调用

private/ public 这两个关键字表示 “访问权限控制” 。被 public 修饰的成员变量或者成员方法, 可以直接被类的调用者使用。被 private 修饰的成员变量或者成员方法, 不能被类的调用者使用。Private 访问修饰限定符。

直接使用public:

 public class Person { 
 	public String name = "张三"; 
	 public int age = 18;
  } 
  class Test { 
	  public static void main(String[] args) {
 		  Person person = new Person(); 
  		  System.out.println("我叫" + person.name + ", 今年" + person.age + "岁"); 
      } 
  }
 // 执行结果 我叫张三, 今年18岁 

这样的代码导致类的使用者(main方法的代码)必须要了解 Person 类内部的实现, 才能够使用这个类. 学习成本较 高 一旦类的实现者修改了代码(例如把 name 改成 myName), 那么类的使用者就需要大规模的修改自己的代码, 维 护成本较高。

使用 private 封装属性, 并提供 public 方法供类的调用者使用。

class Person {
	 private String name = "张三"; 
	 private int age = 18; 
	 public void show() {
	 	 System.out.println("我叫" + name + ", 今年" + age + "岁"); 
	 }
 }
  class Test {
  	 public static void main(String[] args) { 
  	 	Person person = new Person();
  	 	person.show(); 
  	 }
}
 // 执行结果 我叫张三, 今年18岁 

此时字段已经使用 private 来修饰。类的调用者(main方法中)不能直接使用. 而需要借助 show 方法.如果类的实现者修改了字段的名字, 类的调用者不需要做出任何修改(类的调用者根本访问不到 name, age 这样的字段)

类的实现者如果修改了 public 方法 show 的名字, 那么类的调用者仍然需要大量修改代码 。但是一般很少会发生. 一般类的设计都要求类提供的 public 方法能比较稳定, 不应该频繁发 生大的改变. 尤其是对于一些基础库中的类, 更是如此. 每次接口的变动都要仔细考虑兼容性问题.

注意事项: private 不光能修饰字段, 也能修饰方法 通常情况下我们会把字段设为 private 属性, 但是方法是否需要设为 public, 就需要视具体情形而定. 一般我们希 望一个类只提供 “必要的” public 方法, 而不应该是把所有的方法都设为 public。

私有的数据成员在类外此时就不能访问了,需要提供get 和 set方法来进行访问。

继承

1、概念:是一个对象获得另一个对象属性的过程。

如下图理解:
在这里插入图片描述
2、public class Cat(子类,派生类 )extends Animal(父类,基类,超类

继承的作用:为了代码的复用。

3、继承到底继承了父类的什么东西?

除构造函数外的所有;子类继承了父类,子类需要帮助父类来进行构造。

4、super关键字:显示的调用父类的构造方法——》帮助父类来进行构造。

super的三种用法:

  1. super.data();//访问父类的属性。
  2. super.func();//访问父类的成员方法。
  3. super();//调用父类的构造方法。

必须放在方法的第一行,因为子类构造的时候,需要先构造父类,子类继承了父类。

与super关键字一起考察的还有this关键字

this表示当前对象引用(注意不是当前对象)。可以借助 this 来访问对象的字段和方法。

this的三种用法:

  1. this.data;//也就是this.成员变量,访问当前类当中的属性
  2. this.func();//也就是this.成员方法,调用本类的其他成员方法。
  3. this();//调用自己的构造方法 ,调用本类其他的构造方法。

必须放在第一行 只能调用一个构造函数,只能在构造方法里面写。

5、protected
如果父类中的字段或者方法设为 private,子类不能访问。但是设成 public, 又违背了"封装" 的初衷。两全其美的办法就是用 protected 关键字。

6、多继承

因为java是单继承语言,所以java每次只能继承一个类。而C++,python属于多继承语言。

7 final 可以修饰一个变量,也可以修饰类

 final int a = 10;    //常量
final class A {}    密封类

一旦一个类被final所修饰,那么就不能被继承了。

多态

是允许一个接口被多个通用的类动作使用的特性,具体使用哪个动作与应用场合有关,多态的概念常被说成是:“一个接口,多种方法”。

11、父类引用,引用子类的对象 向上转型

父类的引用只能调用自己的方法或者访问自己的属性。

12、向上转型所发生的时机?

I)直接赋值
Ii)参数传递
Iii)方法返回值

13、尽量不要向下转型

向下转型的条件是:父类已经引用了子类(向下转型后的类型)的对象。


在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值