zoukankan      html  css  js  c++  java
  • JavaOO基础理论知识

    注:本篇主要针对初学java者,对java各种实例样式,一些容易混淆的知识点做一个分析。

    1、万物皆为对象,类是蓝图与模板。对象有属性与方法。
    类实例:

    package domain;
    
    public class Person {
    	private String name;
    	private int age;
    	private char gender;
    	
    	public Person() {
    	}
    
    	public Person(String name, int age, char gender) {
    		this.name = name;
    		this.age = age;
    		this.gender = gender;
    	}	
    	
    	public String getName() {
    		return name;
    	}
    	public void setName(String name) {
    		this.name = name;
    	}
    	public int getAge() {
    		return age;
    	}
    	public void setAge(int age) {
    		this.age = age;
    	}
    	public char getGender() {
    		return gender;
    	}
    	public void setGender(char gender) {
    		this.gender = gender;
    	}
    	public void running(String str){
    		System.out.println("女孩子跑步就是好看");
    	}
    	@Override
    	public String toString() {
    		return "Person [name=" + name + ", age=" + age + ", gender=" + gender
    				+ "]";
    	}
    }
    
    2、创建对象实例:
    	Person a  = new Person(“王大锤”,“20”,“男”); (实例化对象是通过调用对象的构造函数完成的,这里调用就是上面类第二个构造器)
    
    3、静态代码块实例:	
    	public class Person {
    		static{ 
    			System.out.println("静态代码");
    		};
    	}
    ——静态代码格式:static{//code};	
    ——特点;随着类的加载而执行,并且只会执行一次,并且还优先于主函数。作用;用于给类进行初始化函数。
    ——作用:可以用于初始化静态成员;
    
    4、构造函数块实例:
    	public class Person {
    		{ 
    			System.out.println("构造函数块");
    		};
    	}
    ——格式:{//code};	
    ——构造函数块是随着对象的创建而加载一次,实例初始化代码块中的语句在任何父类构造器调用之后,在子类构造器调用之前执行。
    
    5、构造函数实例:
    	public class Person {
    		public Person(){}; //无参构造器
    		
    		public Person(String name, int age, char gender) {
    		this.name = name;
    		this.age = age;
    		this.gender = gender;//有参构造器
    		}		
    	}
    ——格式:public 类名 (参数){//参数赋值code}
    ——构造器能被重载,所以一个类可以有多个构造器,当有有参构造器时默认无参构造器就会被覆盖,所以需要手动添加
    
    6、静态代码块、父类构造器、构造函数块、子类构造器的加载顺序;
    对象时加载次序:静态代码块(只加载一次)→→父类构造器→→ 构造函数块(类每次创建加载一次)→→子类构造器;
    
    7、方法实例:
    	public void mothod(String str){
    		System.out.println("方法实例");
    	}
    ——方法格式:访问修饰符 返回参数类型 方法名(参数){//code}
    ——首先访问修饰符的类型有四种:public protected default private ;
    ——返回类型可以是:8种基本类型,引用类型,void;
    ——方法名:首字母小写,单词之间最好遵循驼峰标志;
    ——如果有返回值,方法内必须要有return 关键字和返回值。
    ——(强调一次,java中只有值传递,没有引用传递。)
    
    8、抽象类实例:
    	public abstract class abstractName {   
    		public abstract void mothod1();//抽象方法
    	};
    ——抽象类格式:访问修饰符 抽象关键字  class 抽象类名{//自定义抽象方法 }
    ——在抽象类可以有自己的属性,可以有自己的构造函数,可以写set和get方法,可以有具体方法的实现;但是不能被实例化;
    ——抽象类是拿来继承的;一般类能继承抽象类;
    ——抽象类能继承一般体类;抽象类继承抽象类;抽象类能实现接口;
    
    9、接口实例:
    	public interface interfaceName { 
    		void mothod1();//接口方法
    		void mothod2();//接口方法
    	};
    ——接口格式:访问修饰符  interface 接口名{};
    ——接口中只能定义静态的常量: 任何类型 final, static 字段。
    ——接口中定义的方法都默认是公开的,所以方法可以省略 public abstract 关键字
    ——接口没有构造函数,不能被实例化;
    ——接口是拿来实现的;一般类能实现接口,也能同时实现多个接口;
    ——接口只能继承接口;
    
    10、抽象方法实例:
    	public abstract class abstractName {   
    		public abstract  void mothod1();//抽象方法
    	};
    ——抽象方法格式:public  abstract  返回类型  mothodName (参数);
    ——只要有抽象方法的类,就必须写成抽象类。但是没有抽象方法的类也能声明成抽象类
    
    
    	 
    11、继承类实例
    	public class Person{}
    	public class Girl extends Person{}
    ——继承类格式:访问修饰符  类名  继承关键字  继承类名 {  }
    ——接口能继承接口,继承只能是单继承,java只支持单继承
    	
    12、实现接口实例:
    	public class Girl implements Person(){      };
    ——实现接口格式:访问修饰符  class 类名 实现关键字 被实现接口或抽象类;
    ——实现可以是多实现,多个被现实类之间用逗号分隔
    
    13、数组创建格式
    ——List<> list = new ArrayList<>();
    ——int[] a=new int[o];
    ——rivate String[] name ={"","","",""};
    	
    14、重载与重写:
    ——重载是指在一个类里面,有多个同名方法,但是参数类型,参数个数,参数顺序的不同;调用者调用而选择不同方法;
    ——重写是指在有继承关系的两个类里面,子类对一个方法的重新实现,方法名,返回类型都得一样。
    
    15、this与super
    ——this是对类对象本身的引用,this'还可以用于调用本类的构造器。
    ——super是指在子类或者重新实现功能的类里面,用super可以调用到父类的属性和方法。
    
    16、内部类
    ——静态类部类,作为类的静态成员,存在于某个类的内部;
    ——成员内部类,作为类的成员,存在于某个类内部;要通过外部类创建内部类
    ——局部内部类,存在于某个方法内部的类;只能在方法体中使用,一旦方法执行完,内部类就会被回收;
    ——匿名内部类,存在于某个类的内部,但是无类名的类;new 接口或者一个类;
    ——.实例化的格式。就地实例化和匿名内部类。
    
    17、面向对象的四大支柱;
    ——封装:隐藏一切能隐藏的,只向外界提供最简单的访问编程接口。
    ——继承:继承就是从已有的类得到信息创建新类的过程。
    ——多态:是指允许不同的子类型对象对同一消息做出不同的响应。多态又分为编译时多态和运行时多态;分别通过重载和重写来实现。
    ——抽象:是将一类对象的共同特征总结出来构造类的过程,包括数据抽象和行为抽象两方面。
    
    18、javabean(标准Java类)
    ——必须有无参构造器
    ——必须为私有属性提供标准的set和get方法
    ——应该实现序列化
    
    19、形参与实参
    ——行参是作为方法的参数传递,没有被赋值;
    ——实参,是指被赋值了的参数不能被改变;
    
    20、get与set
    ——get访问器,是拿到。
    ——set修改器,是赋值。
    
    21、多态:
    .方法的重写与重载
    .对象的多态性:上转型会自动完成(父类 父类对象=子类实例)下转型要强转(子类 子类对象=(子类)父类实例
    .instanceof 判断左边的对象是不是右边的实例,如果是返回ture,如果不是返回false。
    
    23、各种方法的调用:
    .类调用自己的方法,直接方法名就行;
    .调用其他非静态类的方法,需要先实例化对象,然后对象打点调用方法;
    .调用静态类的静态方法,直接类名打点调用;(注意:静态方法不能直接调用非静态方法,需要进行对象实例化以后用对象打点调用。)
    
    24、在一个类里调用构造函数要用this。调用父类的构造器要用super,而且要写在子类构造函数的第一行。
    实例:public Girl(String dance) {
    		super();//继承父类构造器
    		this.dance = dance;
    	}
    
    25、重写与重载的异同:@OverWrite与@OverLoaded
    1.重写必须继承,重载不用(注解:重写发生子父类之间,重载需在当前类之中)
    2.重写的方法名、参数类型、数目、参数顺序、返回类型需要一致,重载只需要方法名一致。
    3.重写的访问修饰词的访问级别必须等于或大于原始方法,重载与访问修饰词无关。
    4.重写不能比父类声明更多的异常,可以抛出运行时异常
    
    
    26、抽象类与接口异同:
    1.抽象类的成员可以据有访问级别,接口中的所有成员都是public。
    2.抽象类中可以有自己的私有属性,接口中只能有公开的方法,如果有变量是也公开静态的成员变量(类变量)。
    3.抽象类可以继承接口,接口不能继承抽象类。
    4.抽象类可以有具体实现,而接口不行。
    5.抽象类的子类可以选择性的实现一些方法(这种叫适配器模式),接口需要全部实现。
    
    
    27、变量:
    1.局部变量(作用域于方法内部)
    2.方法参数(作用域整个方法体)
    3.成员变量(作用域整个类和以及能访问他的子类等)
    4.类变量(作用域整个类,访问类名打点直接访问)
    
    
    28、foreach循环样式:
    	for(类型 变量:数组|集合){
    		//每一次循环会自动将数组内的内容设置给变量,foreach循环支持数组的直接访问,避免的了索引访问带来的麻烦。
    	}
    
  • 相关阅读:
    I-Cache和D-cache
    socat使用
    反射
    属性方法
    getitem
    文件打开编辑和函数参数
    python3编码问题个人理解
    正文内容 python3编码问题
    进度条制作
    集合关系
  • 原文地址:https://www.cnblogs.com/gjmfg/p/4594331.html
Copyright © 2011-2022 走看看