面向对象思想:
对于描述复杂的事务,为了从宏观上把握,从整体上合理分析,我们需要使用面向对象的思路来分析整个系统。但是,具体到微观操作,仍然需要面向过程的思路去处理。
什么是面向对象:
类与对象的关系:
创建与初始化对象:
? 封装(数据的隐藏),通常,应禁止直接访问一个对象中数据的实际表示,而应该通过操作接口来访问,这就是信息隐藏。属性私有,get/set
? 重点:“高内聚,低耦合”。高内聚就是类的内部数据操作细节自己完成,不允许外部干涉;低耦合就是仅暴露少量的方法给外部使用。
//封装 alt+insert 快捷键自动生成get/set方法
public class Student {
private String name;//姓名
private Integer id;//学号
private char sex;//性别
private Integer age;//年龄
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public char getSex() {
return sex;
}
public void setSex(char sex) {
this.sex = sex;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
if (age>140||age<0) {//不合法
// System.out.println("年龄输入不合法!");
this.age=0;
}else {
this.age = age;
}
}
}
++++++++++++++++++++++++++++++++++++++++++++++
实现代码:
//封装
public class Application {
/*
1.提高程序的安全性,保护数据
2.隐藏代码的实现细节
3.统一接口
4.系统可维护性增加了
*/
public static void main(String[] args) {
Student student = new Student();
student.setName("郭牛逼");
System.out.println(student.getName());
student.setAge(9);
System.out.println(student.getAge());
}
}
继承:
有关super讲解:
Person类 父类
public class Person {
protected String name="郭鬼";
}
Student类 子类
public class Student extends Person {
private String name="郭萨比";
public void test(String name){
System.out.println("========");
System.out.println(name);//郭皮子坟
System.out.println("========");
System.out.println(this.name);//郭萨比
System.out.println("=========");
System.out.println(super.name);//郭鬼
}
}
测试类
//ctrl+h 快捷键查看继承
//私有的东西不能被继承
public class Application {
public static void main(String[] args) {
Student student = new Student();
student.test("郭皮子坟");
}
}
super注意点:
与this的比较:
//父类
public class Person {
public void run(){
System.out.println("郭皮子坟");
}
}
================================================
//子类
public class Student extends Person {
@Override
public void run() {
System.out.println("郭鬼");
}
public void eat(){
System.out.println("eat");
}
}
==============================================
//测试类
public class Application {
public static void main(String[] args) {
//一个对象的实际类型是确定的
//new Student();
//new Person();
//一个对象的引用类型是不确定的
Student student=new Student();//Student 能调用的方法都是自己的或者继承父类的方法
Person person= new Student();//Person 父类型,可以指向子类,但是不能调用子类独有的方法
Object object =new Student();
//对象能执行那些方法,主要看对象左边的类型,和右边的关系大不大
//person.run();//子类重写了父类的方法,执行子类的方法
//student.run();
student.eat();
// ((Student) person).eat();强转调用子类
}
}
//abstract 抽象类(类~需要继承) 只有单继承 但是(接口可以多继承)
public abstract class Action {
//abstract 用于约束
//abstract 抽象方法 只有方法名,没有方法的实现。
public abstract void run();
}
++++++++++++++++++++++++++++++++++++++++++++
//抽象类的所有方法,继承了它的子类,都必须要实现他的方法 除非子类也是abstract类型的抽象类,那就需要继续继承子子类。
public class A extends Action {
@Override
public void run() {
System.out.println("郭鬼");
}
}
++++++++++++++++++++++++++++++++++++++++++++++++
测试类
public class Application {
public static void main(String[] args) {
// Action action = new A();
// action.run();
A a = new A();
a.run();
}
}
//接口1
public interface UserService {
//接口都需要实现类
//接口的所有定义都是抽象的 public abstract (默认)
void add(String name);
void delete(String name);
void update(String name);
void query(String name);
}
//接口2
public interface TimeService {
void timer();
}
//接口1,2的实现类
public class UserServiceImpl implements UserService,TimeService {
@Override
public void add(String name) {
}
@Override
public void delete(String name) {
}
@Override
public void update(String name) {
}
@Override
public void query(String name) {
}
@Override
public void timer() {
}
}
内部类就是在一个类的内部再定义一个类。比如:A类中定义一个B类,那么B类相对于A类来说就称为内部类,而A类相对于B类就是外部类了。
成员内部类
静态内部类
局部内部类
匿名内部类
public class Outer {
private int id;
public void out(){
System.out.println("这是外部类的方法!");
}
public class Inner{
public void in(){
System.out.println("这是内部类的方法!");
}
//内部类调用外部类的私有属性
public void getId(){
System.out.println(id);
}
}
//局部内部类
// public void method(){
// class Inner{
// public void in(){
// System.out.println("局部内部类");
// }
// }
// }
}
++++++++++++++++++++++++++++++++++++++++++++++++
public class Application {
public static void main(String[] args) {
Outer outer = new Outer();
//通过外部类来实例化内部类
Outer.Inner inner = outer.new Inner();
inner.in();
inner.getId();
//outer.method();
}
}
原文:https://www.cnblogs.com/javastudys/p/java_02.html