一、 包
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的三种用法:
- super.data();//访问父类的属性。
- super.func();//访问父类的成员方法。
- super();//调用父类的构造方法。
必须放在方法的第一行,因为子类构造的时候,需要先构造父类,子类继承了父类。
与super关键字一起考察的还有this关键字
this表示当前对象引用(注意不是当前对象)。可以借助 this 来访问对象的字段和方法。
this的三种用法:
- this.data;//也就是this.成员变量,访问当前类当中的属性
- this.func();//也就是this.成员方法,调用本类的其他成员方法。
- 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、尽量不要向下转型
向下转型的条件是:父类已经引用了子类(向下转型后的类型)的对象。