面向对象概述
符合人类思惟习惯的编程思想 , 生活中存在着不一样形态的事物 , 这些事物存在着不一样的联系 , 在程序中使用对象来映射现实中事物 , 使用对象关系来描述事物之间的联系, 这种思想就是面向对象.java
面向对象过程
分析解决问题所须要的步骤, 使用函数把步骤实现, 再依次调用就能够了. 编程
类与对象 ->封装
class Exampel1{
public static void main (String[] args){
Person p1 = new Person();//建立第一个person对象
Person p2 = new Person();//建立第二个person对象
P1.age = 18;//赋值
P1.speak();//调用对象的方法
P2.speak();
}
}
- 若是没有赋值 , Java会自动赋予初始值
- 类的设计
public class Student{ //设计一个学生类
String name ; // 定义学生姓名属性
int age ; //定义学生年龄属性
public void introduce() {
//方法中打印属性name和age的值
System.out.println("你们好, 我叫"+name +"我今年" +age +
"岁了");
}
}
类的封装
将类的属性私有化, 使用 private 关键字来修饰, 不容许外界随意访问函数
setter : 给成员变量设置属性值,起到必定的保护做用学习
getter : 从成员变量中获取属性值this
构造方法
- 定义
- 方法名与类名相同
- 在方法名的前面没有返回值类型的声明
- 在方法中不能使用return语句返回一个值, 可是能够单独写return语句做为方法的结束
class Person{
int age ;
// 定义有参的构造方法
public Person (int a ){
age = a ; // 为age 属性赋值
}
public void speak (){
System.out.println("今年我已经" + age + "碎了");
}
}
Public class Test{
public static void main(Strings [] age ){
Person p1 = new Person( 20 ); //实例化Person的对象
p1.speak();
}
}
构造方法的重载
在一个类中能够定义多个构造方法,只要每一个构造方法的参数类型或参数个数不一样便可spa
this关键字
设计
- 访问本类中的成员变量
- this和super是区分子类与父类重名的部分
super关键字
- 获取父类中的内容
- 必须写在第一行, 调用父类中的构造方法
- 若是父类的构造是无参数, 能够不写, 若是父类没有无参数的构造,必须写super
static关键字
- 数据共享
- 使用类名 . 变量名去访问 / 使用实例化对象的方式去访问
- 优于对象产生
- 在静态方法不能使用this
- 使用类名 . 方法名去调用静态方法
final关键字
- 被final修饰的变量不能够改变 , 最终的变量又称为常量
- 类不能够继承
- 不能够重写
- 换句话说就是不能够变
包和导包
- 包 : 其实本质就是文件夹
- 在代码中须要写package 包名
- 导包 : import 包 + 类
- 不须要导包 :
- 本身包里
- java.lang包下的都不须要导包
访问权限
- public : 公共的 , 全部人均可以访问
- private : 私有的
- default : 包访问权限 , 在本身的包内能够随意访问
继承
- 使用extends关键字
- 子类能够自动拥有父类私有内容外的全部内容
重写code
- 子类对父类提供的方法进行从新定义
- 子类中的方法必须和父类中的方法彻底一致
- 父类中有多少方法,子类必须重写父类的方法
多态对象
- 同一个对象拥有多种形态
- 做用 : 把不一样的数据类型进行统一
- 对象类型转换
- 向上转型 : 把子类对象赋值给父类的引用(变量)
- 可是会屏蔽掉子类中特有的方法
实现blog
抽象
- java容许在定义方法时不写方法体
- 抽象方法没有方法体
- 抽象方法必须使用abstract关键字修饰
- abstract修饰方法就是抽象方法 , 同时类也变成抽象类(加上abstract)
- 可是抽象类中能够不包含任何抽象方法
特色
- 不能够建立对象
- 子类继承(extends) 父类后 , 抽象的子类,必须重写父类中的抽象方法 , 才能不变成抽象子类
- 抽象类中也能够有正常方法
- 做用 : 能够强制要求子类要求的方法 , 使代码更加规范
接口
- 特殊抽象类
- 全部的方法都是抽象方法 , 能够省略abstract
- 用interface关键字声明 , 全部的内容都是公共的, 全局静态 , 常量
- 定义的全局常量默认修饰为public static final
- 定义的抽象方法默认修饰为public abstract
- 接口和类只能是实现 ( implements ) 关系 (上面的抽象和类是继承extends关系)
- 类只能单继承 , 接口支持多实现
- 类能够继承一个类 , 实现多接口
- 接口同样具备多态性 , 整合不相关内容
object
- 全部类的根
- 默认继承object
- 万事万物皆为对象
equals和==
- equals : 默认调用的是object提供的equals方法 , 判断两个对象内容是否相等
- == : 判断两个对象内存地址是否一致 , 通常用在基本数据类型上
toString
- 默认包+类 @ 地址 , 对一个对象的字符串表示形式
- instanceof : 判断xxx对象是不是xxx类型的
参数传递问题
内存简单分析
JAVA新手一枚 , 大佬勿喷, 以上的内容是学习过程当中的笔记, 权当记录复习 , 具体仍是要看Java的基础案例来理解