java 子类重定义变量_java子类对象和成员变量的隐写方法重写
1、子类继承的方法只能操作子类继承和隐藏的成员变量名字类新定义的方法可以操作子类继承和子类新生命的成员变量,但是无法操作子类隐藏的成员变量(需要适用super关键字操作子类隐藏的成员变量。)
public class ChengYuanBianLing {
public static void main(String[] args) {
// TODO Auto-generated method stub
CheapGoods cheap=new CheapGoods();
// cheap.weight=192.32;//非法
cheap.newSetWeight(23);
System.out.println(cheap.weight);
System.out.println(cheap.newGetPrice());
cheap.oldSetWight(3.32);
System.out.println(cheap.oldGetPrice());
}
}
class Goods{
public double weight;
public void oldSetWight(double w){
weight=w;
System.out.println("double型de weight="+weight);
}
public double oldGetPrice(){
double price=weight*10;
return price;
}
}
class CheapGoods extends Goods{
public int weight;
public void newSetWeight(int w){
weight=w;
System.out.println("新的weight="+weight);
}
public double newGetPrice(){
double price=weight*10;
return price;
}
}
2、方法重写 override method override
方法重写就是子类继承父类,子类方法中使用相同的方法名字和参数个数以及参数类型。子类通过重写父类的方法,可以隐藏父类的方法,重写父类的状态和行为改变为自己的状态和行为。
1、java线程就是一个object类,其实例继承类java.lang.Thread或其子类,创建编写线程运行时执行的代码有两种方式,一种是创建Thread子类的一个实例并重写run方法,一种是创建类的时候实现几口Runnable接口,如下展示的是run和start的区别。通过 调用start就会创建一个新的线程,但是run方法不会。run方法只会在当前的线程中运行。跟普通方法没有任何区别。
运行结果:
2、线程同步问题,
public class XianChengTongBuWenTi {
public static void main(String[] args) {
// TODO Auto-generated method stub
Bank bank=new Bank();
bank.setMoney(300);
Thread account, chsher;
account=new Thread(bank);
chsher=new Thread(bank);
account.setName("读者");
chsher.setName("写者");
account.start();
chsher.start();
}
}
class Bank implements Runnable{
int money=200;
public void setMoney(int n){
money=n;
}
public void run(){
if(Thread.currentThread().getName().equals("读者"))
saveOrTake(200);
else if(Thread.currentThread().getName().equals("写者"))
saveOrTake(300);
}
public synchronized void saveOrTake(int amount){
if(Thread.currentThread().getName().equals("读者")){
// while(true){
for(int i=1;i<=1;i++){
money+=amount/3;
System.out.println(Thread.currentThread().getName()+"开始工作"+"有这么多字"+amount);
try{
Thread.sleep(1000);
}catch(InterruptedException ex){
}
}
}else if(Thread.currentThread().getName().equals("写者")){
for(int i=1;i<=1;i++){
money+=amount/3;
System.out.println(Thread.currentThread().getName()+"开始工作"+"有这么多字"+amount);
try{
Thread.sleep(1000);
}catch(InterruptedException ex){
}
}
}
}
}
3、协调线程同步问题 ,wait和notify以及notifyall是object类中的final方法,被所有的类继承且不允许重写的方法,不可以在非同步方法中使用这些关键字,
public class XieTiaoTongBu {
public static void main(String[] args) {
// TODO Auto-generated method stub
TicketHouse officer=new TicketHouse();
Thread Tian, Ya;
Tian=new Thread(officer);
Tian.setName("田亚明");
Ya=new Thread(officer);
Ya.setName("倩倩");
Tian.start();
Ya.start();
}
}
class TicketHouse implements Runnable{
int fiveAmount=2,tenAmount=0,twentyAmount=0;
public void run(){
if(Thread.currentThread().getName().equals("田亚明")){
saleTicket(20);
}
else if(Thread.currentThread().getName().equals("倩倩")){
saleTicket(29);
}
}
private synchronized void saleTicket(int money){
if(money==20){
fiveAmount+=1;
System.out.println(Thread.currentThread().getName()+"真好合适");
}
else if(money==29){
while(fiveAmount<=3){
try{
System.out.println("\n"+Thread.currentThread().getName()+"等待");
wait();
}catch(InterruptedException ex){
}
fiveAmount-=3;
twentyAmount-=1;
System.out.println(Thread.currentThread().getName());
}
notifyAll();
}
}
}
4、线程联合问题 ,假设线程A在运行期间联合线程B,那么A线程会立刻终止,一直到B线程执行完毕之后A线程才会再一次排队等候CPU资源,以便恢复运行,但是如果A准备连联合的B线程已经结束,那么B.join()不会产生生活效果。
java 子类重定义变量_java子类对象和成员变量的隐写方法重写相关推荐
- java 反射 成员变量_java基础--反射(成员变量)
这里介绍通过反射获取对象的成员变量,以及修改成员变量. package Reflect.field; public class Point { int y; public int getY() { r ...
- java子类对象和成员变量的隐写方法重写
1.子类继承的方法只能操作子类继承和隐藏的成员变量名字类新定义的方法可以操作子类继承和子类新生命的成员变量,但是无法操作子类隐藏的成员变量(需要适用super关键字操作子类隐藏的成员变量.) publ ...
- java 反射 成员变量_java使用反射访问成员变量的值示例
本文实例讲述了java使用反射访问成员变量的值.分享给大家供大家参考,具体如下: 一 代码 import java.lang.reflect.*; class Person { private Str ...
- java中局部变量和成员变量_Java中局部变量和成员变量可以转换么?
/* *创建玩家 */ public void s(){ Scanner input = new Scanner(System.in); List shoupai1 = new ArrayList() ...
- java实例成员和类成员变量_Java 中成员变量又分为 和类成员变量。_学小易找答案...
[简答题]I'm not quite so poetic, but I do know that the subway is as essential to the character of New ...
- 在java程序中定义的类有两种成员_java试题 急需答案 谢谢!!!
三.填空(每小题2分,共10分)1.在Applet中,创建一个具有10行45列的多行文本区对象ta的语句为:2.创建一个标识有"关闭"字样的标签对象gb的语句为.3.方法是一种仅有 ...
- Java语言基础Day14(内部类、类作为成员变量类型、接口作为成员变量类型、接口作为方法的参数或返回值、红包案例、JDK9的JShell、编译器的两点优化)
今日内容 一.内部类 1.内部类的概念与分类 2.成员内部类的定义 3.成员内部类的使用 4.内部类的同名变量访问 5.局部内部类定义 6.局部内部类的final问题 7.匿名内部类 匿名内部类定义格 ...
- Cpp 对象模型探索 / 对象访问成员变量的原理
一.栗子 1.源码 #include <iostream> #include <stdio.h>class Base { public:Base() { std::cout & ...
- 第三次学JAVA再学不好就吃翔(part21)--局部变量与成员变量
学习笔记,仅供参考 文章目录 面向对象 局部变量与成员变量的区别 来几个例子 注意事项 面向对象 局部变量与成员变量的区别 在类中的位置不同 成员变量:在类中方法外 局部变量:在方法定义中或者方法声明 ...
最新文章
- Test execution order
- 一个合格程序员该做的事情
- 日常笔记——思科认证本地域登录
- 使用Seq搭建免费的日志服务
- android 垂直自动滚动条,Android实现Activity水平和垂直滚动条的方法
- 哲学家问题(java)的三个解法
- CCF201312-1 出现次数最多的数
- 中国电信云计算重庆基地建成
- 微信公众号开发工具包
- JAVA基础(3/17)-基本语法_运算符
- 《孤勇者》matlab版,用matlab弹奏《孤勇者》
- 计算机专业拼音怎样写,拼音汉字计算机输入方法
- 浅谈木材加工企业的电气火灾隐患及电气火灾监控系统的应用
- pb通过摄像头拍照并保存到sqlserver中
- mysql中exec语句,sqlserver 中EXEC和sp
- 需要了解的常用Webpack插件配置-loader加载器
- 帮忙改一下狼人杀的错T_T
- 原生js的JSONP跨域请求
- ucmucsiacpi设备感叹号 冰刃4双屏无声音解决办法
- 第二届同花顺算法大赛 | 2022 | AI算法