JavaSE自学笔记Real_004

封装

Private get set

public class Fengzhuang {public static void main(String[] args) {//========================================//封装//========================================/*1、提高了程序的安全性,保护数据2、隐藏代码的实现细节3、统一接口4、系统的可维护性提高*/Student s1 = new Student();s1.setName("张三");System.out.println(s1.getName());}
}
//类 private:私有
public class Student {//属性表示private String name; //名字private int id; //学号private char sex; //性别//提供一些可以操作这个属性的方法//提供一些public的get、set方法//get 获取这个数据public String setName(){return this.name;}//set 给这个数据设置值public void setName(String name){this.name = name;}
}

继承

 //=======================================//继承//=======================================/*继承的本质时对某一批类的抽象,从而事项显示世界更好的建模extends的意思是扩展,子类是父类的扩展Java中类只有单继承,没有多继承继承是类和类之间的一种关系,除此之外,类和类之间的关系还有依赖、组合、聚合等继承关系的两个类,一个为子类(派生类),另一个为父类(基类)。子类继承父类,使用关键字extends来表示子类和父类之间从意义上讲应该具有“is a”的关系*///属性的修饰词://public  protected  default  private//在java种所欲的类都默认直接或间接继承Object这个类

- super关键字与this关键字

/*
super注意点:1、super调用父类的构造方法,必须在构造方法的第一个2、super必须只能出现在子类的方法或者构造器中3、super和this不能同时调用构造方法
比较
this:代表的对象不同:this:本省调用者这个对象super:代表父类对象的应用前提:this:没有继承也可以使用super:只能在继承条件下才可以使用构造方法:this():本类的构造super():父类的构造*/public class Application {public static void main(String[] args) {Students students = new Students();students.test("王五");students.test1();}
}//==================================================================
//在Java中,所有的类,都默认直接或简介继承Object
//HumanBeing 人:父类
public class HumanBeing {//无参构造器public HumanBeing(){System.out.println("HumanBeing无参构造执行了");}protected String name = "张三";//private私有关键字修饰的属性或方法无法被子类调用public void print(){System.out.println("Person");}
}//================================================================
//学生 is 人:派生类  子类
//子类继承了父类,就会拥有父类的全部方法
public class Students extends HumanBeing{//无参构造器//默认先执行父类的无参构造器,再执行子类的无参构造器public Students(){System.out.println("Students无参构造执行了");}private String name = "李四";public void print(){System.out.println("Student");}//使用Super关键字可以调用父类的静态属性public void test(String name){System.out.println(name);System.out.println(this.name); //输出自己的name即李四System.out.println(super.name); //输出父类的name即张三}//使用super还可以调用父类的动态方法public void test1(){print();this.print();super.print();}
}

- 重写

/*
重写:需要有继承关系,子类重写父类的方法1、方法名必须相同2、参数列表必须相同3、修饰符:范围可以扩大,但是不能缩小:public>protected>default>private4、抛出的异常:范围可以缩小,但是不能扩大:ClassNotFundException --> Exception(大)重写,子类的方法和父类的方法名必须要一致,方法体不同为什么要重写:1、父类的功能,子类不一定需要,或者不一定满足2、Alt+Insert:override*/public class Application1 {public static void main(String[] args) {//方法的嗲用只和左边还有定义的数据类型有关A a = new A();a.test();  //A//父类的引用指向子类(里氏转换)B b = new A();b.test();  //B//非静态方法a.test1();b.test1();}
}//================================================================
public class A extends B{//静态方法public static void test(){System.out.println("A=>test()");}//非静态方法public void test1(){System.out.println("A=>test1()");}}//===============================================================
public class B {//静态方法public static void test(){System.out.println("B=>test()");}//非静态方法public void test1(){System.out.println("B=>test1()");}
}

多态

import com.NUST.Demo004.Person;
import com.NUST.Demo004.Student;/*
多态:即同一个方法可以根据发送对象的不同二采用多种不同的行为方式一个对象的实际类型是确定的,但是可以指向对象的引用的类型有很多多态注意事项:1、多态是方法堵塞多态,属性没有多态2、两个类之间需要有继承关系才能进行类型转换,富则会报错:ClassCastException3、多态存在的条件:有继承关系,方法需要重写,父类引用指向子类对象,Father f1 = new Son();4、以下修饰词的方法不能被重写:(1)static方法:属于类本身,不属于实例(2)final 常量(3)private 方法属于父类实例私有*/public class Application2 {public static void main(String[] args) {//多态//一个对象的实际类型是确定的//new Student();//new Person();//父类的引用指向子类,若子类没有重写父类的方法,则执行父类的方法//若子类重写了父类的方法,则执行子类的方法//可以指向的引用类型就不确定的:父类的引用指向子类Student s1 = new Student();Person s2 = new Student();Object s3 = new Student();//子类会重写父类的方法,执行子类的方法s2.run(); //sons1.run(); //son}
}//==============================================================
public class Person {public void run(){System.out.println("run");}
}//=============================================================
public class Student extends Person{public void run(){System.out.println("son");}
}

- instanceof关键字与类型转换

import com.NUST.Demo004.Person;
import com.NUST.Demo004.Student;
import com.NUST.Demo004.Teacher;import java.util.Scanner;public class Application2 {public static void main(String[] args) {//=========================================================//instanceof关键字//=========================================================//Object > String//Object > Person > Teacher//Object > Person > StudentObject object = new Student();System.out.println(object instanceof Student); //trueSystem.out.println(object instanceof Person); //trueSystem.out.println(object instanceof Object); //trueSystem.out.println(object instanceof Teacher); //FalseSystem.out.println(object instanceof String); //FalseSystem.out.println("==============================================");Person person = new Student();System.out.println(person instanceof Object); //trueSystem.out.println(person instanceof Person); //trueSystem.out.println(person instanceof Object); //trueSystem.out.println(person instanceof Teacher); //False//System.out.println(person instanceof String);  ////===============================================================//类型之间的转换//===============================================================/*1、父类引用指向子类的对象2、把子类转换为父类,向上转换:直接就能转换  可能会丢失子类的一些方法3、把父类转换为子类,向下转换:必须进行强制转换4、方便方法的调用,减少重复的代码*///   高    ->       低Person obj = new Student();//student将这个对象转换为Student类型,我们就可以使用Student类型的方法了Student student = (Student) obj; // 简写:((Student)obj).go();student.go();}
}//=====================================================================
public class Person {public void run(){System.out.println("run");}
}//====================================================================
public class Student extends Person{public void go(){System.out.println("go");}}//===================================================================
public class Teacher extends Person{}

抽象类(abstract)

//abstract 关键字表示抽象类 extends只能单继承, (但是接口可以多继承)
public abstract class Action {//如果有一个方法是不必要的但是必须要写的,太麻烦,可以让别的类帮忙把这些都写了//abstract 抽象方法  只有方法的名字即可。没有方法的实现public abstract void doSomething();//1、抽象类不能进行实例化,也就是不能用new关键字,只能用子类来实现它//2、抽象类里面可以写普通的方法//3、一个类里面由抽象方法,那么这个类就必须设置为抽象类
}

接口

/*
接口的作用:1、它是一种约束2、定义了一些方法,让不同的类进行实现3、接口的方法的修饰符都是:public abstract4、接口里面的变量的修饰符都是:public static final5、接口不能被实例化6、implement可以实现多个结成,相当于多继承7、必须要重写接口中的方法*///抽象类 extends只能单继承
//类 可以实现接口 implement 接口
//实现接口的类必须要重写接口中的方法
//接口从另一种角度实现了多继承
public class UserServiceImpl implements UserService, TimeService{@Overridepublic void add(String name) {}@Overridepublic void delete(String name) {}@Overridepublic void update(String name) {}@Overridepublic void query(String name) {}@Overridepublic void timerScan() {}
}//==========================================================
//接口的基础学习==============================
//interface 定义接口的关键字
public interface UserService {//接口中的所有定义其实都是抽象的  public abstractvoid add(String name);void delete(String name);void update(String name);void query(String name);
}//======================================================
public interface TimeService {void timerScan();
}

内部类

public class Application4 {public static void main(String[] args) {Outer outer = new Outer();//通过这个外部类来实例化内部类Outer.Inner inner = outer.new Inner();inner.in();}
}//==================================================
public class Outer {private int id;public void out(){System.out.println("这是外部类的方法");}public class Inner{public void in(){System.out.println("这是内部类的额方法");}}
}

JavaSE自学笔记Real_004相关推荐

  1. JavaSE自学笔记016_Real(多线程)

    JavaSE自学笔记016_Real(多线程) 一.进程与线程 1.进程 一个正在执行中的程序叫做一个进程.系统会为了这个进程发配独立的[内存资源],进程是程序的依次执行过程,他有着自己独立的生命周期 ...

  2. JavaSE自学笔记013_Real(抽象类、接口、两种设计模式)

    JavaSE自学笔记013_Real(抽象类.接口) 一.基本概述 (一)抽象类(关键字:abstract) //抽象方法 public abstract class Animal{abstract ...

  3. JavaSE自学笔记Real_008(多线程基础)

    JavaSE自学笔记Real_008(多线程基础) 线程的优先级设置(priority) 线程的优先级用数字表示,范围是1到10(在范围之外会报错) Thread.MIN_PRIORITY = 1 T ...

  4. JavaSE自学笔记

    由于之前是使用word编写,所以可能效果不如人意,可以私信找我拿资源 由于之前学习JavaSE之前自学了JavaScript,所以有部分理解是基于JavaScript 比较基础的DOS命令 按住win ...

  5. 我的javaSE学习笔记

    layout: post title: "我的JAVASE自学笔记" date: 2019-05-18 20:23:25 +0800 我的JAVASE自学笔记 作者:吴甜甜 个人博 ...

  6. JAVA自学笔记21

    JAVA自学笔记21 1.转换流 由于字节流操作中文不是非常方便,因此java提供了转换流 字符流=字节流+编码表 1)编码表 由字符及其对应的数值组成的一张表 图解: 2)String类的编码和解码 ...

  7. JavaSE回顾笔记Ⅲ

    JavaSE回顾笔记Ⅲ ​ 前言,,懒得写了,去看2吧,开头有几句废话. ​ day13和上一个重复,是因为这一个是完全自学的一个章节,因为并没什么用,但是很感兴趣就简单看了一下.因为强迫症,不想向后 ...

  8. 字节跳动大佬的Python自学笔记.pdf

    1. 字节跳动大佬的Python自学笔记 这是我的一个朋友自学资料包,通过这个资料包自学拿到了字节跳动的Offer, 下面是他之前入门学习Python时候的学习资料,非常全面,从Python基础.到w ...

  9. JAVA自学笔记07

    JAVA自学笔记07 1.构造方法 1) 例如:Student s = new Student();//构造方法 System.out.println(s);// Student@e5bbd6 2)功 ...

最新文章

  1. linux指令的一些基础知识
  2. linux 脚本设置时间戳,修改linux系统时间的方法(date命令)
  3. VS2003 找不到IsProcessInJob()
  4. 自动生成Hibernate框架结构
  5. 改正错误:tensorflow.python.framework.errors_impl.NotFoundError: FindFirstFile failed for: ...
  6. 帧率ffmepg 摄像头_【WIN电竞】CSGO解除锁帧方法介绍
  7. MATLAB生成FPGA COE文件之XILINX FPGA滤波器系数
  8. linux性能评估-内存基础理解篇
  9. 最近用到的浏览器兼容javascript总结
  10. 基于FPGA的深度学习CNN加速器设计
  11. 详细分析Java8中default关键字
  12. 网页调用rm播放器代码 - 详细说明
  13. 有权最短路径问题:狄克斯特拉(Dijkstra)算法 Java 实现
  14. 【Unity大气散射】GAMES104:3A中如何实现大气散射
  15. 【玩转c++】多态深度刨析
  16. WebRTC::FEC
  17. 收藏本站——添加到浏览器收藏夹
  18. 3个案例讲清如何构建“What-if分析”,教你轻松玩转动态参数
  19. 古罗马数字的基本知识
  20. python geometry参数_python arcgis Geometry | 学步园

热门文章

  1. kangle登陆html,kangle安装SSH2
  2. html5学习系列——qrs标签
  3. 如何用Camtasia在微课中添加测试题?
  4. 腾讯Deep CNNS卷积加速架构
  5. 华为od统一考试B卷【连续出牌数量】JavaScript 实现
  6. 2014年计算机求职总结--准备篇 -- 书记推荐
  7. 《电网技术》最新投稿经验
  8. Maya_角色动画制作流程
  9. 基于JAVA校园流浪猫图鉴管理系统的设计与实现计算机毕业设计源码+系统+数据库+lw文档+部署
  10. 解决Sentinel log base directory is: C:\Users***\logs\csp\