面向对象技术
Java面向对象的四大特征
抽象:对现实中的某一实体或事件提取相同信息和共同规律的过程
封装:就是将属性或行为隐藏起来,不允许其他人修改,仅对外提供接口。
继承
多态:静态多态和动态多态
访问修饰符
Public:公共的。所有对象都可以调用
Private:私有的。自己内部使用
Protected:受保护的。子类和自己可以使用
Friendly:友好的。同一个包里可以访问。(默认访问修饰符)
方法的重载:同名的方法,参数类型、参数个数、参数的顺序不同的情况。
方法返回类型的不一样不能说明是重载方法。必须依靠方法的名字、参数类型、参数个数、参数顺序
例:下面的两个方法是同种方法,不能称为方法的重载,即使它们的返回类型不同。 public void say(){ System.out.println("你好啊!"); } public int say(){ System.out.println("你好啊!"); return 1; }
|
构造函数:在类的实例化,或者调用this()方法的时候自动调用的构造函数。用于对象的创建和初始化
作用:初始化成员变量或者其他的一些数据
特征:构造函数的名称和类名一样
没有返回值的类型
可以重载构造函数
当类没有构造函数的时候,类在实例化的时候会自动加上无参的构造函数
值传递和引用传递
值传递:参数传递的是值的副本。方法得到的是保存在形参中的原实参变量的值的副本,对形参变量的操作和修改不会影响到原来实参变量的值。基本数据类型是值传递
public class test1{ public static void main(String args[]){ int tmp=10; System.out.println(" 改变前:tmp="+tmp); change(tmp); System.out.println(" 改变后:tmp="+tmp); } public static void change(int tmp){ tmp=100; } } class people{ int age; } 结果不变 |
引用传递:参数传递的是值的引用地址,形参和实参引用同一个对象,传递一个指针。对象是引用传递。String本质是引用传递,String的不可修改的特性导致多次赋值时会重建新的String对象,改变的只是地址。
public class test1{ public static void main(String args[]){ people p=new people(); System.out.println(" 改变前:p.age="+p.age); change(p); System.out.println(" 改变后:p.age="+p.age); } public static void change(people p){ p.age=100; } } class people{ int age=0; } 结果发生变化,变为100 |
终态
终态类:不能被继承、修改的类,使用final。String 是一个终态类
终态方法:不能被覆盖、修改的方法,使用final
终态属性:不能被修改的属性。final在属性前表示常量。
This关键字:代表类\对象自身
this()调用类自身的构造函数,必须出现在构造函数的第一行。
继承extends
子类继承父类可获取非私有的方法和数据。重复使用共同的方法和属性,简化了代码
Java不支持多继承。
当实例化子类的时候,默认调用父类的无参构造函数。通过super()调用不同的父类(超类、基类)构造方法。super()还可以表示对父类的引用。
例:
public class test{ public static void main(String args[]){ Manager m=new Manager("老板",2000);//调用Manager类的有参构造函数 System.out.println("姓名:"+m.EmpName); System.out.println("薪资:"+m.getSalary()); System.out.println("职位:"+m.EmpDept); } } class Manager extends Employee{ protected String EmpDept; protected int ManagerSalary;
public Manager(){ this.EmpDept="高级经理"; this.ManagerSalary=1000; } public Manager(String EmpDept,int ManagerSalary){ super(2,"李四",2000);//调用父类的有参函数 this.EmpDept=EmpDept; this.ManagerSalary=ManagerSalary; } //当子类中出现和父类中方法名一样的方法,子类的该方法覆盖父类的方法 public int getSalary(){ return EmpSalary+ManagerSalary; } } class Employee{ protected int EmpId; protected String EmpName; protected String EmpSex; protected String EmpPhone; protected String EmpAddr; protected int EmpSalary;
public Employee(){ this.EmpId=1; this.EmpName="张三"; this.EmpSalary=1000; } public Employee(int EmpId,String EmpName,int EmpSalary){ this.EmpId=EmpId; this.EmpName=EmpName; this.EmpSalary=EmpSalary; } public int getSalary(){ return EmpSalary; } } |
静态方法、静态成员、静态块和普通块。使用static
静态:先于实例化执行的代码,在类的实例化之前就加载静态内容到内存当中。
l 非静态方法可以引用静态方法,但是静态方法不能直接引用非静态方法。
l 静态方法(自定义的)和非静态方法实例化后都可以在任何地方应用其内部方法,
通过“实例化对象类名.方法名”实现。
l 静态方法一般不需实例化,直接通过“类名.方法名”调用。
l 静态成员的赋值是为其最初的空间赋值,若有重赋值则覆盖原来的值。非静态成员则不一样。
静态方法和静态成员通过类名调用。
例:静态方法say、静态字段age public class test2{ public static void main(String args[]){ people.say(); people.age=100; System.out.println(people.age); } } class people{ String name; static int age; public static void say(){ System.out.println("非静态的方法"); } } |
静态变量的引用是不初始化的,直接用最初的声明空间,改变值就是改变最初空间里的值。
非静态变量的引用需要初始化,改变值是改变初始化后的空间的值。
静态变量的变量类型可以是一个类。
例:public static TestA a = new TestA(); 通过new TestA实例化类TestA,然后将其赋值给类型为TestA的a |
单独的程序块在构造函数前执行。例{}
静态块的作用:初始化静态变量及其他静态信息。
程序块执行先后顺序:
静态程序块>非静态程序块>构造函数
子类和父类构造函数的执行顺序:
父类的静态块>子类的静态块>父类的非静态块>父类的构造函数>子类的非静态块>子类的构造函数
覆盖
原则:方法的返回类型相同;方法的名称相同;方法的参数类型、数量、顺序相同;子类方法修饰符的权限不能比父类更小。
Object里面的equals方法。比较两个对象是否“相等”,比较的是引用地址。
方法的参数里面可以用子类去替换父类(里氏代换原则)
equals是object类的一个方法,比较的是两个对象,即地址。String继承object类,它的equals方法覆盖object的equals方法,比较两个数的值。类似的还有Integer和Double String str=”test”; String str2=”test”; System.out.println(str.equals(str2)); 结果为true。str和str2是两个值,此时equals比较两个值 String str=new String(”test”); String str2=new String(”test”); System.out.println(str==str2); 结果为false。“==”比较两个对象 String str=new String(”test”); String str2=new String(”test”); System.out.println(str.equals(str2)); 结果为true。String的equals方法覆盖object的equals方法,比较两个数的值。 Manager m=new Manager("老板",2000); Manager m2=new Manager("老板",2000); System.out.println(m.equals(m2)); 结果为false。Manager继承object,equals比较两个对象。 总结:对于String这样的类,equals比较的永远是值,==根据条件比较对象或值。 对于其他的没有覆盖object中的equals方法的声明类,equals和==都比较两边的对象。 |
抽象类和抽象方法
抽象类:只能被继承,不能被实例化,抽象类中可以是抽象方法,也可以是普通方法。
当抽象类被子类继承时,子类必须覆盖父类的抽象方法。
抽象方法:只能是声明,不能被实现,只能出现在抽象类和接口里面。
多态
静态多态:方法重载
动态多态:程序运行时根据对象类型找到对应的方法。
例:
public class test1{ public static void main(String args[]){ Shape s=new sanjiao();//实例化sanjiao后赋给对象shape System.out.println(s.getShape()); } } abstract class Shape{ String waiguan; public abstract String getShape(); public void test(){ return "aa"; } } class sanjiao extends Shape{ public String getShape(){ return "三角形"; } }
|
异常执行顺序(try语句出现异常)
Finally有return:
catch非return语句—》finally非return语句—》finally return语句:得到finally return结果
finally无return:
catch非return语句—》finally非return语句—》catch return语句:得到catch return结果
相关推荐
Java基础总结大全涵盖了Java编程语言的核心概念,从JVM、JRE和JDK的区别,到环境变量的设置,再到变量的定义和类型转换,深入浅出地讲解了Java的基础知识。 1. JVM、JRE和JDK: - JVM(Java Virtual Machine)是...
"java基础总结资料"涵盖了Java语言的核心概念,是学习和复习Java基础知识的重要资源。以下是一些主要的知识点: 1. **Java语法基础**:包括变量声明、数据类型(基本类型和引用类型)、运算符、流程控制(如if语句...
【Java基础总结大全】 Java是世界上最流行的编程语言之一,其跨平台特性主要依赖于Java虚拟机(JVM)。JVM是Java的核心组成部分,它解析并执行编译后的Java字节码,确保Java程序可以在任何支持JVM的操作系统上运行...
### Java基础总结 #### 一、Java概述 Java是由Sun Microsystems公司(现已被Oracle收购)在1991年由James Gosling领导的团队所开发的一种面向对象的编程语言。最初命名为Oak,旨在用于控制嵌入式设备和消费电子...
JAVA基础总结PPT ,基础知识前4章部分,适合回顾总结用。
"老毕java基础总结"是一个专为初学者设计的学习资源,旨在帮助他们掌握Java编程的基础知识。下面,我们将深入探讨这份文档可能涵盖的关键知识点: 1. **Java环境配置**:学习Java的第一步是安装JDK(Java ...
毕向东java基础总结(完整版) 本资源为毕向东老师的java基础总结,涵盖了java的基础知识点,从零开始学习java的自学笔记。本文档对java的基础知识进行了系统的总结,包括java的概述、java语法基础、变量、数据类型...
【Java基础总结】 Java是一种广泛使用的面向对象的编程语言,具有丰富的类库和强大的功能。以下是对Java基础知识的总结,适合长时间未接触Java的人快速查阅,同时也非常适合初学者学习。 ### Eclipse相关 Eclipse...
java基础知识总结 以思维导图的方式对java中的变量、八种基本类型、运算符和表达式、逻辑结构、数组、方法等知识点进行总结
Java基础总结笔记主要涵盖了编程语言Java的核心概念和应用领域,旨在为初学者提供全面的指导。以下是这些知识点的详细说明: 1. **Java基础语法**:这是学习Java的第一步,包括变量、数据类型(基本类型与引用类型...
【标题】"JAVA基础总结共4页.pdf.zip" 提供的是关于Java编程语言的基础知识的浓缩版教程,可能涵盖了从入门到进阶的关键概念。Java是一种广泛应用的面向对象的编程语言,由Sun Microsystems(现为Oracle公司)开发,...
### CoreJava基础总结 #### Module1 -- Java开发环境介绍及编程入门 1. **Java开发基本术语** - **JDK (Java Development Kit)**:Java开发工具包,它包含了类库(Class Library)以及用于Java开发的各种命令工具...
【标题】"Java基础总结大全共94页.pdf" 是一份详尽的Java编程语言学习资料,涵盖了Java语言的基础知识,旨在帮助初学者或有一定经验的开发者巩固和深化对Java的理解。这份文档可能包含了从基本语法到核心概念的全面...
这份"java基础总结大全(笔记).pdf"涵盖了Java的基础知识,对于学习者来说是一份宝贵的资源。 1. **Java语法基础**:Java的基础语法包括变量、数据类型、运算符、流程控制语句(如if条件语句、switch选择语句、for、...
在"Java基础总结大全"中,我们将会深入探讨Java语言的核心概念和关键特性,帮助初学者建立坚实的Java编程基础。 一、Java语言基础 1. 变量与数据类型:Java提供了基本数据类型(如int、char、float等)和引用数据...
本资料“java基础总结.rar”包含了对Java基础知识的全面概述,是学习和复习Java编程的理想参考资料。以下是该文档可能涵盖的一些核心知识点: 1. **Java语言简介**:介绍Java的历史、特点和应用领域,解释为什么它...