概述
· 高级语言可分为:面向过程和面向对象两大类
1. 面向过程与面向对象都是解决问题的思维方式,都是代码组织的方式。
2. 解决简单问题可以使用面向过程。
3. 解决复杂问题:宏观上使用面向对象把握,微观处理上仍然是面向过程。
· 对象和类的关系是特殊到一般,具体到抽象的关系。
· 栈内存
1. 每个线程私有,不能实现线程间的共享!
2. 局部变量放置于栈中。
3. 栈是由系统自动分配,速度快!栈是一个连续的内存空间!
· 堆内存
1. 放置new出来的对象!
2. 堆是一个不连续的内存空间,分配灵活,速度慢!
· 方法区
1. 被所有线程共享!
2. 用来存放程序中永远是不变或唯一的内容(类代码信息、静态变量、字符串常量)。
· 属性用于定义该类或该类对象包含的数据或者说静态属性。属性作用范围是整个类体。Java使用默认的值对其初始化。
· 方法则用于定义该类或该类实例的行为特征和功能实现。方法是类和对象行为特征的抽象。
· 构造器又叫做构造方法(constructor),用于构造该类的实例。Java通过new关键字来调用构造方法,从而返回该类的实例,是一种特殊的方法。
· 垃圾回收机制
1. 程序员无权调用垃圾回收器。
2. 程序员可以通过System.gc()通知垃圾回收器(Garbage Collection,简称GC)运行,但是Java规范并不能保证立刻运行。
3. finalize方法,是Java提供给程序员用来释放对象或资源的方法,但是尽量少用。
· 方法的重载是指一个类中可以定义有相同的名字,但参数不同的多个方法。 调用时,会根据不同的参数表选择对应的方法。
· this关键字的作用
1. 让类中的一个方法,访问该类的另一个方法或属性。
2. 使用this关键字调用重载构造方法,可以避免相同的初始化代码,只能在构造方法中用,并且必须位于构造方法的第一句。
· static关键字
1. 在类中,用static声明的成员变量为静态成员变量,也称为类变量。
2. 用static声明的方法为静态方法。
3. 可以通过对象引用或类名(不需要实例化)访问静态成员。
· package的作用
1. 可以解决类之间的重名问题。
2. 便于管理类:合适的类位于合适的包!
· impport的作用
1. 通过import可以导入其他包下面的类,从而可以在本类中直接通过类名来调用。
· super关键字的作用
1. super是直接父类对象的引用。可以通过super来访问父类中被子类覆盖的方法或属性。
· 面向对象的三大特征:继承、封装、多态。
· Object类是所有Java类的根基类。
· 访问权限控制符:范围由小到大分别是private、default、protected、public。
· 引用变量名 instanceof 类名 来判断该引用类型变量所“指向”的对象是否属于该类或该类的子类。
· final关键字可以修饰变量、修饰方法、修饰类。
· 抽象类是一种模版模式。抽象类为所有子类提供了一个通用模版,子类可以在这个模版基础上进行扩展,使用abstract修饰。
· 使用abstract修饰的方法为抽象方法必须被子类实现,除非子类也是抽象类。
· 使用interface声明接口
1. 从接口的实现者角度看,接口定义了可以向外部提供的服务。
2. 从接口的调用者角度看,接口定义了实现者能提供哪些服务。
· 内部类分为成员内部类、匿名内部类和局部内部类。
· String位于java.lang包中,Java程序默认导入java.lang包。
· 字符串的比较"=="与equals()方法的区别。
#####################
- private、默认、protected、public四个权限修饰符的作用。
private表示私有的,只能在自己的类中使用
default表示默认的,可以在用以包中的类使用
protected表示被保护的,可以在用以包中的其他类使用,及其他包中的子类
public表示公开的,整个项目都可以使用 - 继承条件下子类构造方法的执行过程。
首先调用当前子类的super()方法来调用父类的方法
一次追溯到Object类中的构造方法中,然后依次向下执行初始化和构造方法 - 什么是向上转型和向下转型
向上转型:父类指引子类对象
向下转型:指的是在向上转型中父类引用的变量只能调用他便以类型的方法
不能调用子类中的属性及方法,此时的转型叫向下转型 - final和abstract关键字的作用
final关键字的作用:用final修饰的变量不能被赋值,成为常量。
用final修饰的方法不能重写,被final修饰的类不能被继承
a’b’stract:抽象类的作用就是规范,模板,子类必须实现抽象类的方法
1抽象类中没有方法体,子类必须实现方法体
2抽象类中的方法必须是抽象方法
3抽象类不能实例化对象 - 和equals()的联系和区别
Object的equals方法默认就是比较两个对象的hashcode
是通一个对象的引用时返回true 不是返回false
“” 是判断两个值是否相等。
package cn.wkx.javahomework;
/***
*
*1. 编写应用程序,创建类的对象,分别设置圆的半径、圆柱体的高,计算并分别显示圆半径、圆面积、圆周长,圆柱体的体积。
实现思路及关键代码:
1) 编写一个圆类Circle,该类拥有:
a) 一个成员变量,radius(私有,浮点型);//存放圆的半径
b) 两个构造方法(无参、有参);
c) 三个成员方法
double getArea() //获取圆的面积
double getPerimeter() //获取圆的周长
void show() //将圆的关径、周长、面积输出到屏幕
*
*/
public class Circle {
public static void main(String[] args) {
Circle c1 = new Cylinder(3.1, 1.2);
c1.show();
Cylinder c2 =(Cylinder)c1;
c2.show2();
}
double radius;
public Circle(double radius) {
super();
this.radius = radius;
}
public Circle(){
super();
this.radius = radius;
}
double getArea(){
return Math.PI*radius*radius;
}
double getPerimeter(){
return Math.PI*radius*2;
}
void show(){
System.out.println("圆的面积"+getArea());
System.out.println("圆的周长"+getPerimeter());
}
}
class Cylinder extends Circle{
private double hight;
public Cylinder(double radius, double hight) {
super(radius);
this.hight = hight;
}
double getVolume(){
return getArea()*hight;
}
void show2(){
System.out.println("圆柱体的体积:"+getVolume());
}
}
package cn.wkx.javahomework;
/*
* 2. 编写程序实现乐手弹奏乐器。乐手可以弹奏不同的乐器从而发出不同的声音。可以弹奏的乐器包括二胡、钢琴和琵琶。
实现思路及关键代码:
1) 定义乐器类Instrument,包括方法makeSound();
2) 定义乐器类的子类:二胡Erhu、钢琴Piano和小提琴Violin;
3) 定义乐手类Musician,可以弹奏各种乐器play(Instrument i);
4) 定义测试类,给乐手不同的乐器让他弹奏。
*/
abstract class Instrument{
String name;
String sound;
abstract String makeSound();
}
//二胡
class Erhu extends Instrument{
public Erhu() {
// TODO Auto-generated constructor stub
name = "二胡";
sound = "二胡声";
}
@Override
String makeSound() {
// TODO Auto-generated method stub
return sound;
}
}
//Paino
class Paino extends Instrument{
public Paino() {
// TODO Auto-generated constructor stub
name="钢琴";
sound="钢琴声";
}
@Override
String makeSound() {
// TODO Auto-generated method stub
return sound;
}
}
class Musician{
public void play(Instrument m){
System.out.println("乐手在演奏"+m.name+"并有"+m.makeSound());
}
}
public class TestInstrument {
public static void main(String[] args) {
Musician m1 = new Musician();
Erhu e1 = new Erhu();
Paino p1 = new Paino();
m1.play(e1);
}
}
``
```java
package cn.wkx.javahomework;
/*
* 3. 编写程序描述影视歌三栖艺人。需求说明:请使用面向对象的思想,设计自定义类,描述影视歌三梄艺人。
实现思路:
1) 分析影视歌三栖艺人的特性:可以演电影,可以演电视剧,可以唱歌
2) 定义多个接口描述特性
a) 演电影的接口-----方法:演电影
b) 演电视剧的接口-----方法:演电视剧
c) 唱歌的接口-----方法:唱歌
3) 定义艺人类实现多个接口/
*/
import java.util.jar.Attributes.Name;
interface Play{
void play();
}
interface Sing{
void sing();
}
interface Dance{
void dance();
}
class Actor implements Play,Sing,Dance{
String name;
public Actor(String name) {
super();
this.name = name;
}
void Myself(){
System.out.println("大家好我叫"+name);
}
@Override
public void dance() {
// TODO Auto-generated method stub
System.out.println("我会跳舞");
}
@Override
public void sing() {
// TODO Auto-generated method stub
System.out.println("我会唱歌");
}
@Override
public void play() {
// TODO Auto-generated method stub
System.out.println("我会演戏");
}
}
public class TestThreeActor {
public static void main(String[] args) {
Actor actor = new Actor("杨幂");
actor.Myself();
actor.play();
actor.sing();
actor.dance();
}
}
最后
以上就是内向河马为你收集整理的JAVA面向对象部分总结的全部内容,希望文章能够帮你解决JAVA面向对象部分总结所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复