我是靠谱客的博主 内向河马,最近开发中收集的这篇文章主要介绍JAVA面向对象部分总结,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

· 高级语言可分为:面向过程和面向对象两大类

  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()方法的区别。
#####################

  1. private、默认、protected、public四个权限修饰符的作用。
    private表示私有的,只能在自己的类中使用
    default表示默认的,可以在用以包中的类使用
    protected表示被保护的,可以在用以包中的其他类使用,及其他包中的子类
    public表示公开的,整个项目都可以使用
  2. 继承条件下子类构造方法的执行过程。
    首先调用当前子类的super()方法来调用父类的方法
    一次追溯到Object类中的构造方法中,然后依次向下执行初始化和构造方法
  3. 什么是向上转型和向下转型
    向上转型:父类指引子类对象
    向下转型:指的是在向上转型中父类引用的变量只能调用他便以类型的方法
    不能调用子类中的属性及方法,此时的转型叫向下转型
  4. final和abstract关键字的作用
    final关键字的作用:用final修饰的变量不能被赋值,成为常量。
    用final修饰的方法不能重写,被final修饰的类不能被继承
    a’b’stract:抽象类的作用就是规范,模板,子类必须实现抽象类的方法
    1抽象类中没有方法体,子类必须实现方法体
    2抽象类中的方法必须是抽象方法
    3抽象类不能实例化对象
  5. 和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面向对象部分总结所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(52)

评论列表共有 0 条评论

立即
投稿
返回
顶部